【问题标题】:How to specify the path where saveAsTable saves files to?如何指定 saveAsTable 保存文件的路径?
【发布时间】:2015-09-01 16:55:41
【问题描述】:

我正在尝试使用 DataFrameWriter 将 DataFrame 保存到 Spark1.4 中的 pyspark 中的 S3

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

parquet 文件位于“/tmp/hive/warehouse/....”,这是我的驱动程序上的本地 tmp 目录。

我确实将 hive-site.xml 中的 hive.metastore.warehouse.dir 设置为“s3a://....”位置,但 spark 似乎不尊重我的 hive 仓库设置。

【问题讨论】:

  • 它使用“列名=”保存文件路径,如 s3a://bucket/foo/col1=1/,s3a://bucket/foo/col1=2/,s3a:/ /bucket/foo/col1=3/,..... 有什么办法可以避免附加列名?像 s3a://bucket/foo/1/,s3a://bucket/foo/2/

标签: apache-spark pyspark apache-spark-sql


【解决方案1】:

使用path

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

【讨论】:

    【解决方案2】:

    您可以使用insertInto(tablename) 覆盖自1.4 以来的现有表

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 2021-07-26
      • 2014-06-14
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多