apache-spark - 多个 spark 作业写入同一个 hive 分区外部表 - spark 2.3
问题描述
我有存储为镶木地板的 Hive 外部MyTable
表partition(load_date:String, load_type:String)
。函数
loadData(start,end)
是一个包装函数,df.insertinto()
最后有一个火花动作。使用输入调用此函数loadData(20190101,20190103)
将在 HDFS 目录结构下创建
load_date=2019101/type=A
load_date=2019101/type=B
load_date=2019102/type=A
load_date=2019102/type=B
load_date=2019103/type=A
load_date=2019103/type=B
def loadData(start,end):
....
// dynamic insert for start to end date range
df.write.mode(SaveMode.Overwrite).insertInto(MyTable) // for type A
....
df.write.mode(SaveMode.Overwrite).insertInto(MyTable) // for Type B
注意 -insertinto()
上述函数中的 2 出于某种原因顺序运行。在单个火花应用程序中,我旋转多个写入Mytable
但每个作业写入单独分区的火花作业,例如 -
val interval= [ (20190101,20190105), (20190106,20190110), (20190111,20190115), .....]
interval.grouped(3).foreach(grp => grp.par.foreach(slot => loadData(slot._1,slot._2))
3个作业按预期并行触发,申请成功完成。但在输出 HDFS 位置,我看到一些随机分区丢失。
例如,内部type=B
缺少分区load_date=201910101
20190105
load_date=20190101/type=A
load_date=20190102/type=A
load_date=20190103/type=A
load_date=20190104/type=A
load_date=20190105/type=A
load_date=20190106/type=A
load_date=20190107/type=A
load_date=20190108/type=A
load_date=20190109/type=A
load_date=201901010/type=A
load_date=20190106/type=B
load_date=20190107/type=B
load_date=20190108/type=B
load_date=20190109/type=B
load_date=201901010/type=B
解决方案
推荐阅读
- woocommerce - PayPal 与 Woocommerce 集成的应用程序 ID
- r - data.table:子集并查找每行的累积乘积
- apache-spark - 如何使用 Spark 结构化流同时写入 Parquet 并调用 REST API
- ios - iOS 14 小部件未更新
- bash - 使用 bash 脚本将 xml 标签添加/插入到现有的 xml 文件中
- react-native - 在 React Native 中查找硬编码字符串(使用 WebStorm)
- javascript - 找不到变量 Safari - Safari 扩展
- r - 同一行上的徽标和文字 警官 R
- javascript - 我正在尝试在 jsx-react 中动态添加图像,但它不会显示
- swift - 在 SwiftUI 中传递 html 字符串时加载本地 js 文件