python读取oracle数据到hvie parquet_关于sparksql操作hive,读取本地csv文件并以parquet的形式装入hive中...

本文介绍了如何使用Spark 2.2.0和Hive 1.2.1将本地CSV文件批量加载到Hive外部表中。通过创建SparkSession,读取CSV文件并转换为DataFrame,然后注册为临时视图,接着创建Hive外部表(存储为Parquet格式),最后将数据插入表中。整个过程需要注意文件路径、Parquet存储格式和Hive外部表的创建语法。
摘要由CSDN通过智能技术生成

说明:spark版本:2.2.0

hive版本:1.2.1

需求: 有本地csv格式的一个文件,格式为${当天日期}visit.txt,例如20180707visit.txt,现在需要将其通过spark-sql程序实现将该文件读取并以parquet的格式通过外部表的形式保存到hive中,最终要实现通过传参的形式,将该日期区间内的csv文件批量加载进去,方式有两种:

1、之传入一个参数,说明只加载一天的数据进去

2、传入两个参数,批量加载这两个日期区间的每一天的数据

最终打成jar包,进行运行

步骤如下:

1、初始化配置,先创建sparkSession(spark2.0版本开始将sqlContext、hiveContext同意整合为sparkSession)

//初始化配置

val spark = new sql.SparkSession

.Builder()

.enableHiveSupport()  //操作hive这一步千万不能少

.appName("project_1")

.master("local[2]")

.getOrCreate()

2、先将文件读进来,并转换为DF

val data = spark.read.option("inferSchema", "true").option("header", "false") //这里设置是否处理头信息,false代表不处理,也就是说文件的第一行也会被加载进来,如果设置为true,那么加载进来的数据中不包含第一行,第一行被当作了头信息,也就是表中的字段名处理了

.csv(s"file:///home/spark/file/project/${i}visit.txt")  //这里设置读取的文件,${i}是我引用的一个变量,如果要在双引号之间引用变量的话,括号前面的那个s不能少

.toDF("mac", "phone_brand", "enter_time", "first_time", "last_time", "region", "screen", "stay_time") //将读进来的数据转换为DF,并为每个字段设置字段名

3、将转换后的DF注册为一张临时表

data.createTempView(s"table_${i}")

4、通过spark-sql创建hive外部表,这里有坑

spark.sql(

s"""

|create external table if not exists ${i}visit

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值