2016-12-04 9 views
0

私は、寄木張りファイルを書くためにpySparkを使用します。私は、そのファイルのhdfsブロックサイズを変更したいと思います。私はこのようなブロックサイズを設定し、それは動作しません:pysparkでhdfsブロックサイズを変更するには?

sc._jsc.hadoopConfiguration().set("dfs.block.size", "128m") 

これはpySparkジョブを開始する前に設定する必要がありますか?もしそうなら、それを行う方法。

+0

こんにちは、以下の回答のいずれかがあなたの問題を解決した場合(http://meta.stackexchange.com/q/5234/ [受諾]をご検討ください179419)ベストアンサーか独自のソリューションを追加してください。それで、あなたが解決策を見つけたことをより広範なコミュニティに示すということです。 – mrsrinivas

+0

私はあなたがそれを変更することができるかどうかはわかりませんが、これはファイルがHDFSに書き込まれる方法です。 Sparkは、ファイルパーティションごとのタスク(マッパーの種類)を割り当てます。なぜ多くの人々がスパークのために256mのブロックを持つことをお勧めします。 –

答えて

1

SparkContext Scalaでは

from pyspark import SparkConf, SparkContext 
conf = (SparkConf().setMaster("yarn")) 
sc = SparkContext(conf = conf) 
sc._jsc.hadoopConfiguration().set("dfs.block.size", "128m") 
txt = sc.parallelize(("Hello", "world", "!")) 
txt.saveAsTextFile("hdfs/output/path") #saving output with 128MB block size 

sc._jsc.hadoopConfiguration()を通してそれを設定してみてください:

sc.hadoopConfiguration.set("dfs.block.size", "128m") 
+0

動作していません。私はpysparkバージョン1.6.2を使用しています。 –

+0

pls更新を確認する – mrsrinivas

0

私は似問題があったが、私はこの問題を考え出しました。それは "128m"ではない番号が必要です。したがって、これは動作し(少なくとも私のために働いた!)する必要があります

block_size = str(1024 * 1024 * 128) 
sc._jsc.hadoopConfiguration().set("dfs.block.size", block_size) 
関連する問題