2017-06-29 6 views
0

以下のコードでは、out.csvは寄木細工の形式です。 csvファイルとして書き込むには、どのオプションが欠けていますか?Pyspark:csvに書き込むとcsvの代わりに寄木張りを書きます

import py4j 
from pyspark import SparkConf, SparkContext 
from pyspark import HiveContext as hc 
import os 
from pyspark.sql import SQLContext, Row 

from datetime import datetime 
from pyspark.sql.types import DateType,StringType 
import pyspark.sql.functions as F 

os.environ['PYSPARK_SUBMIT_ARGS'] = '--packages com.databricks:spark-csv_2.11:1.5.0' 
conf = SparkConf().setMaster("local[64]").setAppName("My App") 
sc = SparkContext(conf = conf) 
sqlContext = SQLContext(sc) 

#read parquet file into DF 
df = sqlContext.read.parquet('/path/in_parquet') 

# Write to csv 
df_grouped = df.groupBy('column1').agg(F.sum('column2')) 
df_grouped.repartition(1).write.format("com.databricks.spark.csv").option("header", "true").save("/path/out.csv") 

出力:コンソールに残っている

最後の数行。

spark-submit --master local [*] --driver-memory 12g - パッケージcom.databricks:spark-csv_2.11:1.2.0 MyPysparkは、スクリプトを実行するために使用したコマンドです。 .py

$ hdfs dfs -ls /path/out.csv 
Found 2 items 
-rw-r--r-- 3 me devs   0 2017-06-29 12:16 /path/out.csv/_SUCCESS 
-rw-r--r-- 3 me devs  552 2017-06-29 12:16 /path/out.csv/part-00000 
+0

出力を表示できますか? – eliasah

+0

は、出力ログと詳細情報を追加する質問を編集しました。 – PSInf

+0

ジョブではなくファイル出力です。 – eliasah

答えて

0

スパークは、したがって、あなたは、各パーティションのファイルpart-xxxxxを取得し、個別データの各パーティションを保存しています。指定するパス.save("/path/out.csv")は、ファイルを保存するディレクトリです。part-xxxxxのファイルはすでにcsvの形式です。

複数のファイルと小さなデータセットがある場合は、coalesce(1)を使用して、結果を保存して1つのcsvファイルを受け取ることができます。大規模なデータセットの場合は、ファイルを保存してからFileUtil.copyMerge()(Hadoopコマンド)でマージすることをお勧めします。

関連する問題