Hdfsファイルシステムにアクセスでき、寄木細工のファイルを表示できます
hadoop fs -ls /user/foo
これらの寄木細工のファイルをローカルシステムにコピーし、csvに変換して使用できるようにするにはどうすればよいですか?ファイルは、行ごとにいくつかのフィールドを持つ単純なテキストファイルである必要があります。
試す
df = spark.read.parquet("/path/to/infile.parquet")
df.write.csv("/path/to/outfile.csv")
関連するAPIドキュメント:
/path/to/infile.parquet
と/path/to/outfile.csv
の両方がhdfsファイルシステム上の場所である必要があります。 hdfs://...
を明示的に指定するか、通常はデフォルトのスキームであるため省略できます。
ローカルファイルはクラスタ内のすべてのマシンで異なるファイルを意味するため、file://...
の使用は避けてください。代わりにHDFSに出力し、コマンドラインを使用して結果をローカルディスクに転送します。
hdfs dfs -get /path/to/outfile.csv /path/to/localfile.csv
または、HDFSから直接表示します。
hdfs dfs -cat /path/to/outfile.csv
パーケットファイルの名前が正確にわからない場合があるため、より動的なフォームのスニペットは次のようになります。
for filename in glob.glob("[location_of_parquet_file]/*.snappy.parquet"):
print filename
df = sqlContext.read.parquet(filename)
df.write.csv("[destination]")
print "csv generated"
Hiveでこれらの寄木細工のファイルに定義されたテーブルがある場合(または自分でそのようなテーブルを定義した場合)、そのテーブルでHiveクエリを実行し、結果をCSVファイルに保存できます。次のように試してください。
ローカルディレクトリを上書きして挿入 dirname '、'で終了する行フォーマット区切りフィールド 選択*から テーブル名;
dirname
とtablename
を代入します実際の値で。指定したディレクトリ内の既存のコンテンツはすべて削除されることに注意してください。詳細は クエリからデータをファイルシステムに書き込む を参照してください。