apache-spark - 外部表未从 Spark 流写入的 Parquet 文件更新

标签 apache-spark hive apache-spark-sql parquet

我正在使用 Spark 流将聚合输出作为 Parquet 文件写入使用 SaveMode.Append 的 hdfs。我创建了一个外部表,如:

CREATE TABLE if not exists rolluptable
USING org.apache.spark.sql.parquet
OPTIONS (
  path "hdfs:////"
);

我的印象是,在外部表的情况下,查询也应该从新添加的 Parquet 文件中获取数据。但是,似乎新写入的文件没有被提取。

每次删除并重新创建表都可以正常工作,但不是解决方案。

请建议我的表如何也有来自较新文件的数据。

最佳答案

你在用 Spark 读那些表吗?
如果是这样, Spark 缓存拼花表元数据(因为模式发现可能很昂贵)

为了克服这个问题,您有 2 个选择:

  • 设置配置 spark.sql.parquet.cacheMetadatafalse
  • 查询前刷新表:sqlContext.refreshTable("my_table")

  • 详情请看这里:http://spark.apache.org/docs/latest/sql-programming-guide.html#hive-metastore-parquet-table-conversion

    关于apache-spark - 外部表未从 Spark 流写入的 Parquet 文件更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33812993/

    相关文章:

    java - 如何获取 Spark MLlib RandomForestModel.predict 响应作为文本值 YES/NO?

    hadoop - Hive 更新效率(版本 0.14)

    hive - Sqoop:如何将输入列名称映射到 Hive 中的不同列名称?

    java - Spark Dataframe 的 count() API 的替代方案

    PySpark Schema 应以 DDL 格式指定为字符串文字或 schema_of_json 函数的输出而不是 schemaofjson (`col1` );

    scala - 交叉联接运行时错误:使用CROSS JOIN语法允许这些关系之间的笛卡尔积

    apache-spark - 如何将 H2OFrame 中的列转换为 python 列表?

    apache-spark - 如何按组使用 approxQuantile?

    azure - 无法将表加载到Azure Blob中存在的配置单元中

    Pyspark:在同一列上加入数据帧时,引用不明确