【发布时间】:2017-12-31 18:13:28
【问题描述】:
我正在尝试使用上述方法解决 spark sql 小文件问题,例如在我的组织中,用户传入 sql 语句。
insert overwrite table x partition (column1) select * from y;
我可以在 spark sql 中运行上面的 sql 问题是与具有 (merge small files= true) 选项的 hive 相比,它会创建小文件等...这在 spark sql 中不起作用。
我想出了一个解决方法,例如将用户 sql 语句拆分为两部分 select 子句和 insert 子句,从 select 子句首先创建 Dataframe 并获取估计大小并计算输出文件并插入到目标表下面是示例.
val df=sqlContext.sql(select * from y)
val size=SizeEstimator.estimate(df)
val outputFiles=size/256000
df.coleasce(outputFiles).wirte.mode.Append("x partition (column1)")
Java/Scala 中是否有正则表达式函数或库可以将 select 子句和 insert 子句从 sql 字符串中分离出来?
谢谢
【问题讨论】: