• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > Spark如何读写hive

Spark如何读写hive

作者:复鹰 字体:[增加 减小] 来源:互联网

本文主要包含等服务器相关知识,复鹰希望可以进行参考

 

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

1) 写入hive表

 

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

 

2)写入hive分区中

case class Person(name:String,col1:Int,col2:String)
val sc = new org.apache.spark.SparkContext  
val hiveContext = new org.apache.spark.sql.hive.HiveContext(sc)
import hiveContext.implicits._
hiveContext.sql("use DataBaseName")
val data = sc.textFile("path").map(x=>x.split("\\s+")).map(x=>Person(x(0),x(1).toInt,x(2)))
data.toDF().registerTempTable("table1")
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到指定目录下。代码如下:

 

result.rdd.map { r => r.mkString("\001") }.repartition(partitions).saveAsTextFile(output_tmp_dir)
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

 

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • ERROR (ConnectionError): HTTPConnectionPool (Caused by <class 'socket.error'>: [Errno 111] Connecti,errno111
  • kafka集群搭建,kafka集群
  • 如何选择大数据培训机构,选择数据培训机构
  • spark 查看 job history 日志,sparkjob
  • 【Spark1.3官方翻译】Spark集群模式概览,spark1.3spark
  • Linux配置时间服务器,linux配置服务器
  • MemStore刷写线程—MemStoreFlusher源代码分析,hbasememstore
  • HBase,hbase安装
  • Hive作为Mondrian的数据源,hivemondrian
  • 大数据分析与应用的8个场景

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Storm简述及集群安装,Storm简述集群安装
    • Hadoop学习总结,hadoop总结
    • Linux系统只能连上内网不能够连上外网。Unit network.service entered failed state.,外网访问内网服务器
    • NOSQL(一)为什么选用NoSQL?,选用nosql
    • Hadoop DistributedCache使用案例,hadoopcache
    • openstack中Nova组件Networks的所有python API 汇总,openstacknova
    • CDH5 hadoop-hive-habse单机版配置,hadoophivehbase
    • Spark RDD API扩展开发(1),sparkrdd
    • RedHadoop创始人童小军在北京开讲“Hadoop2.0集群优化与管理”啦!,redhadoophadoop2.0
    • Hive 外部表 分区表,hive外部表分区表

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有