如何将 Spark 数据帧存储为 Parquet 格式的动态分区 Hive table?

How to store Spark data frame as a dynamic partitioned Hive table in Parquet format?

当前原始数据在Hive上。我想连接几个分区的 TB Hive tables,然后将结果输出为 Parquet 格式的分区 Hive table。

我正在考虑将 Hive table 的所有分区加载为 Spark 数据帧。然后进行加入、分组等等。这是正确的做法吗?

最后我需要保存数据,我们能否将 Spark 数据帧保存为 Parquet 格式的动态分区 Hive table?如何处理元数据?

  • 如果多个数据集中的一个比另一个足够小,您可能需要考虑使用 Broadcast 以提高数据传输效率。

  • 根据数据的性质,您可以尝试 group by,然后 join。这样每台机器只需要处理一组特定的数据,减少任务期间传输的数据量运行.

  • Hive支持直接将数据存储为Parquet格式。 https://cwiki.apache.org/confluence/display/Hive/Parquet。你试过了吗?