使用pyspark读写hive数据表

1、读Hive表数据

pyspark提供了操作hive的接口,可以直接使用SQL语句从hive里面查询需要的数据,代码如下:

from pyspark.sql import SparkSession, HiveContext
spark = SparkSession.builder.enableHiveSupport().getOrCreate()

# 显示hive 数据库名字(默认显示20条)
# 语法同hive一样的,查询结果以dataframe 格式返回
spark.sql("show databases").show()


# 使用拼接sql语句的方式查询
hive_database = "test"             #  要操作的数据库
hive_table = "table_01"             #  要操作的数据表
hive_read_sql = "select * from {}.{}".format(hive_database, hive_table)

read_df = spark.sql(hive_read_sql)
read_df.show()

2、往Hive表写数据

    使用pyspark 向hive 表写数据有两种方式 :

    2.1 dataframe 注册临时表然后写入hive

data = [
    (1,"11","111"),
    (2,"22","222"),
    (3,"33","333"),
    (4,"44","444")
]
# 创建dataframe,添加表头
write_df = spark.createDataFrame(data, ['id', "value1", 'value2'])
write_df.show() 

# 将dataframe 注册成一个临时表,名字是test_hive 
write_df.registerTempTable('test_hive')

# 将数据从临时表导入目标hive表(test.table_02)
spark.sql("drop table if exists test.table_02")
spark.sql("create table test.table_02 as select * from test_hive")

   2.2 dataframe 直接写入hive

# "overwrite"是重写表的模式,如果表存在,就覆盖掉原始数据,如果不存在就重新生成一张表
# 以orc 格式存储数据
write_df.write.format("orc").mode("overwrite").saveAsTable('test.table_02')

 

你可能感兴趣的:(spark,hive,大数据)