您的位置:首页 > 运维架构 > Apache

一起学spark(10) -- spark SQL中的结构化数据之一 : Apache Hive

2018-02-02 18:15 393 查看
Apache Hive 是Hadoop 上的一种常见的结构化数据源,Hive 可以在HDFS 内或者其他存储系统上存储多种格式的表,这些格式从普通文本到列式存储格式,应有尽有。Spark SQL可以读取 Hive 支持的任何表。
要把 spark sql 连接到已有的 Hive 上,你需要提供hive 的配置文件,需要将hive-site.xml 文件复制到 Spark 的./conf/目录下,这样做好后,再创建HiveContext对象,也就是 Spark SQL 的入口,然后就可以使用 Hive 查询语言 HQL 对表进行查询,并以由行组成的RDD的形式拿到返回的数据。from pyspark.sql import HiveContext
hiveCtx = HiveContext(sc)
rows = hiveCtx.sql("select name,age from ...")
firstRow = rows.first()
print firstRow.name往Hive中插入数据,写入数据表
sql_str = "select ... from ..."
df = hiveCtx.sql(sql_str).repartition(100) #关于分区后面会介绍
sql_insert = "insert overwrite table table1 partition(pdaily = 'xxx') " + sql_str
#方法一,直接执行
hiveCtx.sql(sql_insert) #直接执行sql操作
#方法二,通过 dataframe
df.write.partitionBy("pdaily").insertInto("table1",True) #最后的参数表示是否 overwrite
Spark 对并行度的调优:
   (1)第一种是在数据混洗时,使用参数的方式为混洗后的RDD指定并行度
   (2)第二种方法是对于任何已有的RDD,通过 repartition(n) 将数据随机打乱并分成设定的分区数目,减少RDD分区可用coalesce(),由于coalesce没有打乱数据,因此比 repartition 更高效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spark sql Apache hive