原文引自:http://blog.csdn.net/zongzhiyuan/article/details/78076842

hive数据表建立可以在hive上建立,或者使用hiveContext.sql(“create table ....")

1) 写入hive表

  1. case class Person(name:String,col1:Int,col2:String)
  2. val sc = new org.apache.spark.SparkContext
  3. val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
  4. import hiveContext.implicits._
  5. hiveContext.sql("use DataBaseName")
  6. val data = sc.textFile("path").map(x=>x.split("\\s+")).map(x=>Person(x(0),x(1).toInt,x(2)))
  7. data.toDF().insertInto("tableName")

2)写入hive分区中

  1. case class Person(name:String,col1:Int,col2:String)
  2. val sc = new org.apache.spark.SparkContext
  3. val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
  4. import hiveContext.implicits._
  5. hiveContext.sql("use DataBaseName")
  6. val data = sc.textFile("path").map(x=>x.split("\\s+")).map(x=>Person(x(0),x(1).toInt,x(2)))
  7. data.toDF().registerTempTable("table1")
  8. hiveContext.sql("insert into table2 partition(date='2015-04-02') select name,col1,col2 from table1")

将数据写入分区表的思路是:首先将DataFrame数据写入临时表,之后是由hiveContext.sql语句将数据写入hive分区表中。

3)优化

将文件存为符合hive table文件的格式,然后使用hive load将产生的结果文件直接move到指定目录下。代码如下:

  1. result.rdd.map { r => r.mkString("\001") }.repartition(partitions).saveAsTextFile(output_tmp_dir)
  2. sql(s"""load data inpath '$output_tmp_dir' overwrite into table $output partition (dt='$dt')""")

hive column默认分隔符在scala/java中的表示为“/001”,r.mkString("/001")既是将column以分隔符/001进行分割,hive在导入时会自动识别。
使用hive load data命令,将hdfs文件load到hive表中。后台操作为直接将目录下的文件移到hive table所在目录,所以只是hdfs move数据的过程,执行非常快。

需要注意的是,此处要求hive建表时,以textfile格式建表。

参考:

http://blog.csdn.net/zgc625238677/article/details/53928320

如果是命令行操作,可以参考http://blog.csdn.net/fansy1990/article/details/53401102

《如何解决spark写hive慢的问题》http://blog.csdn.net/lulynn/article/details/51543567

最新文章

  1. linux云服务器mysql ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’
  2. Fedora 24最新工作站版本之四大重要改进
  3. Java8简明教程(转载)
  4. vmware 虚拟机 桥接 设置静态 IP
  5. Android控件(一)下拉刷新:SwipeRefreshLayout
  6. SQLServer2012 分页语句执行分析
  7. 让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法 转载
  8. 移动UI
  9. properties文件作用以及在哪些地方用
  10. Jquery基础知识01
  11. 洛谷 [P1387] 最大正方形
  12. 打印十字图 JAVA 递归实现
  13. JavaFX——简单的日记系统
  14. 【noip模拟赛4】Matrix67的派对 暴力dfs
  15. docker往阿里云推镜像和打包镜像
  16. #6278. 数列分块入门 2(询问区间内小于某个值 xx 的元素个数)
  17. VC,VB操作XML
  18. JS 互相调用iframe页面中js方法、VUE里 iframe 互调方法
  19. Flex用HTTPService调用servlet返回中文乱码解决
  20. 0053 用注解方式配置Spring MVC

热门文章

  1. splay 模板 洛谷3369
  2. NX二次开发-算法篇-随便找个不规则的体,找出面的中心点的Z坐标最高和最低的面,高亮显示
  3. sql 生成javabean实体
  4. flutter 修饰盒子
  5. 2019 牛客多校第一场 D Parity of Tuples
  6. spark-sql createOrReplaceTempView 和createGlobalTempView区别
  7. Python高级核心技术97讲✍✍✍
  8. 第三天:字典表dict、元组tuple、文件与类型汇总
  9. 在npm中使用bower包依赖工具
  10. ubuntu自带截图工具