apache pysparkでUnicodeEncodeError: ‘ascii’ codec can’t encode characterとか出たら

localeの設定が間違っていると思われます。 pysparkの実行環境で import locale print(locale.getpreferredencoding()) を表示してみましょう。ANSIとか出てきたら駄目です。ここがUTF-8でないといけません。 sparkの実行サーバーで locale と打ってみて、LANGがja_JP.UTF-8になっていればこの問題は解決できます。 とりあえずconf/spark-env.shに export LANG=ja_JP.UTF-8 と打ってsparkを再起動して解決しました

apache-sparkトラブルシュート

java.lang.OutOfMemoryError: Java heap space javaのヒープメモリが足りない。こういうトラブルの場合大抵はメモリの設定が悪い。 ExecuorMemoryとDriverMemoryを拡大させる conf/spark-env.shに以下を追加し、ドライバー(親)とエクゼキューター(複数のマシンに分散して実行するプロセス?)の確保できる最大メモリを増やす SPARK_EXECUTOR_MEMORY=5g SPARK_DRIVER_MEMORY=20g また、collectなど、最終的にmapしたRDDを収集するときの最大サイズにも注意が必要。そのような最大サイズはconfにspark.driver.maxResultSizeを設定する。 scalaを使用している場合、オプションはSparkContextから設定できる val conf = new SparkConf() conf.set(“spark.driver.maxResultSize”,”10g”)