嗨,我有90 GB的数据在csv文件中,我正在加载这些数据到一个临时表,然后从临时表到orc表使用select insert命令,但转换和加载到orc格式的数据,它花了4个小时在火花sql.Is有任何一种优化技术,我可以用来减少这个time.As的现在我没有使用任何一种优化技术,我只是使用spark sql和加载数据从CSV文件到表(文本格式),然后从这个临时表到orc表(使用选择插入)使用spark提交为:
spark-submit \
--class class-name\
--jar file或者我可以在spark submit中添加任何额外的参数来改进优化。
scala代码(示例):
All Imports
object demo {
def main(args: Array[String]) {
//sparksession with enabled hivesuppport
var a1=sparksession.sql("load data inpath 'filepath' overwrite into table table_name")
var b1=sparksession.sql("insert into tablename (all_column) select 'ALL_COLUMNS' from source_table")
}
}发布于 2020-04-02 13:39:27
我只是使用spark sql将数据从csv文件加载到表(文本格式),然后从这个临时表加载到orc表(使用select insert)
这里不需要两步流程..
val DFCsv = spark.read.format("csv")
.option("sep", ",")
.option("inferSchema", "true")
.option("header", "true")
.load("yourcsv")repartition(可能这是实际延迟4小时的原因,因为您尚未执行此操作),因为它的文件很大,然后...dfcsv.repartition(90)意味着它将/可能将csv数据重新划分为90个几乎相等的部分。其中90是样本号。你想提什么就提什么吧。
DFCsv.write.format("orc")
.partitionBy('yourpartitioncolumns')
.saveAsTable('yourtable')或
DFCsv.write.format("orc")
.partitionBy('yourpartitioncolumns')
.insertInto('yourtable')注意: 1)对于大数据,您需要进行重新分区以均匀分布数据,这将增加并行度,从而提高性能。2)如果您没有patition列并且是非分区表,那么在上面的示例
中不需要partitionBy
https://stackoverflow.com/questions/60984121
复制相似问题