首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark sql优化技术将csv加载到hive的orc格式

Spark sql优化技术将csv加载到hive的orc格式
EN

Stack Overflow用户
提问于 2020-04-02 12:13:53
回答 1查看 492关注 0票数 0

嗨,我有90 GB的数据在csv文件中,我正在加载这些数据到一个临时表,然后从临时表到orc表使用select insert命令,但转换和加载到orc格式的数据,它花了4个小时在火花sql.Is有任何一种优化技术,我可以用来减少这个time.As的现在我没有使用任何一种优化技术,我只是使用spark sql和加载数据从CSV文件到表(文本格式),然后从这个临时表到orc表(使用选择插入)使用spark提交为:

代码语言:javascript
复制
    spark-submit \
    --class class-name\
    --jar file

或者我可以在spark submit中添加任何额外的参数来改进优化。

scala代码(示例):

代码语言:javascript
复制
    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")

    }
    }
EN

回答 1

Stack Overflow用户

发布于 2020-04-02 13:39:27

我只是使用spark sql将数据从csv文件加载到表(文本格式),然后从这个临时表加载到orc表(使用select insert)

这里不需要两步流程..

  • 像下面的示例一样读取数据帧...

代码语言:javascript
复制
val DFCsv = spark.read.format("csv")
      .option("sep", ",")
      .option("inferSchema", "true")
      .option("header", "true")
      .load("yourcsv")

  • 如果需要,您必须执行repartition(可能这是实际延迟4小时的原因,因为您尚未执行此操作),因为它的文件很大,然后...

dfcsv.repartition(90)意味着它将/可能将csv数据重新划分为90个几乎相等的部分。其中90是样本号。你想提什么就提什么吧。

代码语言:javascript
复制
      DFCsv.write.format("orc")
    .partitionBy('yourpartitioncolumns')
    .saveAsTable('yourtable')

代码语言:javascript
复制
     DFCsv.write.format("orc")
     .partitionBy('yourpartitioncolumns')
     .insertInto('yourtable')

注意: 1)对于大数据,您需要进行重新分区以均匀分布数据,这将增加并行度,从而提高性能。2)如果您没有patition列并且是非分区表,那么在上面的示例

中不需要partitionBy

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60984121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档