当前原始数据位于Hive上。我想连接几个分区的TB级Hive表,然后将结果作为Parquet格式的分区Hive表输出。
我正在考虑将Hive表的所有分区加载为Spark数据帧。然后加入,分组等等。这是正确的方法吗?
最后我需要保存数据,我们可以将Spark数据帧保存为Parquet格式的动态分区Hive表吗?如何处理元数据?
答案 0 :(得分:0)
如果多个数据集中的一个比另一个小得多,您可能需要考虑使用 Broadcast 来提高数据传输效率。
根据数据的性质,您可以尝试分组,然后加入。因此,每台机器只需要处理一组特定的数据,减少任务运行期间传输的数据量。
Hive支持直接将数据存储为Parquet格式。 https://cwiki.apache.org/confluence/display/Hive/Parquet。你试过试试吗?