[英]Spark write to parquet on hdfs
我安裝了3個節點hadoop和spark。 我想從rdbms中獲取數據到數據框中,並將這些數據寫入HDFS中的鑲木地板。 “dfs.replication”值為1。
當我嘗試使用以下命令時,我已經看到所有HDFS塊都位於我執行spark-shell的節點上。
scala> xfact.write.parquet("hdfs://sparknode01.localdomain:9000/xfact")
這是預期的行為還是應該在群集中分布所有塊?
謝謝
由於您將數據寫入HDFS,因此不依賴於spark,而是依賴於HDFS。 來自Hadoop:權威指南
Hadoop的默認策略是將第一個副本放在與客戶端相同的節點上(對於在群集外部運行的客戶端,隨機選擇一個節點,盡管系統嘗試不選擇太滿或太忙的節點)。
所以,是的,這是預期的行為。
就像@nik說的那樣,我用多個客戶做我的工作,它完成了我:
這是python片段:
columns = xfact.columns test = sqlContext.createDataFrame(xfact.rdd.map(lambda a: a),columns) test.write.mode('overwrite').parquet('hdfs://sparknode01.localdomain:9000/xfact')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.