2015-06-16 9 views
7

Sto cercando di salvare un dataframe per S3 in pyspark in Spark1.4 utilizzando DataFrameWriterCome specificare il percorso in cui saveAsTable salva i file?

df = sqlContext.read.format("json").load("s3a://somefile") 
df_writer = pyspark.sql.DataFrameWriter(df) 
df_writer.partitionBy('col1')\ 
     .saveAsTable('test_table', format='parquet', mode='overwrite') 

I file in parquet sono andati a "/ tmp/alveare/magazzino/....", che è una directory tmp locale sul mio autista

Ho configurato hive.metastore.warehouse.dir in hive-site.xml in una posizione "s3a: // ....", ma la scintilla non sembra rispettare le impostazioni del mio magazzino alveare.

+0

Si salva il percorso del file con il "nome di colonna =" come s3a: // secchio/foo/col1 = 1 /, S3A:// bucket/foo/col1 = 2 /, s3a: // bucket/foo/col1 = 3 /, ..... Esiste un modo per evitare di aggiungere il nome della colonna? come s3a: // bucket/foo/1 /, s3a: // bucket/foo/2 / – androboy

risposta

14

Utilizzare path.

df_writer.partitionBy('col1')\ 
     .saveAsTable('test_table', format='parquet', mode='overwrite', 
         path='s3a://bucket/foo') 
0

è possibile utilizzare insertInto(tablename) per sovrascrivere una tabella esistente dal 1.4