web-dev-qa-db-fra.com

Comment spécifier le chemin où saveAsTable enregistre les fichiers?

J'essaie d'enregistrer un DataFrame sur S3 dans pyspark dans Spark1.4 en utilisant DataFrameWriter

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')

Les fichiers parquet sont allés dans "/ tmp/Hive/warehouse/...." qui est un répertoire tmp local sur mon pilote.

J'ai installé Hive.metastore.warehouse.dir dans Hive-site.xml à un emplacement "s3a: // ....", mais spark ne semble pas respecter ma ruche réglage de l'entrepôt.

11
ChromeHearts

Utilisez path.

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

vous pouvez utiliser insertInto(tablename) pour remplacer une table existante puisque 1.4

0
tintin