spark读Hadoop文本文件到hive

环境
centos:7.2
python2:2.7.5
python3:3.6.5
spart:2.2.0
ambari:2.6.1
hdp:2.6.4


一、指定pyspark的python 通过python3运行
1.软连接python3到/usr/bin/目录下
ln -s /usr/local/python3/bin/python3 /usr/bin/
2.修改/usr/bin/pyspark文件
在文件中增加:
export PYSPARK_PYTHON=python3


二、读取txt文件到spark后保存到HIVE中


# -*- coding: utf-8 -*-  
from __future__ import print_function
from pyspark.sql import SparkSession  
from pyspark.sql import Row  
  
if __name__ == "__main__":  
    # 初始化SparkSession  
    spark = SparkSession \
        .builder \
        .appName("TextToHive") \
        .config("spark.some.config.option", "some-value") \
        .getOrCreate()  
  
    sc = spark.sparkContext  
  
    lines = sc.textFile("hdfs://10.250.11.52:8020/source/db/centercode/20180507")
    parts = lines.map(lambda l: l.split(","))  
    centercode = parts.map(lambda p: Row(centercode=p[0], centername=p[1],qscode=p[2]))
  
    #RDD转换成DataFrame  
    centercode_temp = spark.createDataFrame(centercode)
  
    #显示DataFrame数据  
    centercode_temp.show()
  
    #创建视图  
    centercode_temp.createOrReplaceTempView("t_centercode")
    #过滤数据  
    employee_result = spark.sql("SELECT centercode,centername, qscode FROM t_centercode")
#CREATE  HIVE TABLE
spark.sql("CREATE TABLE IF NOT EXISTS oracledb.t_lnt_basic_center_code (centercode STRING, centername STRING,qscode STRING) USING hive")
#追加
spark.sql("insert into table oracledb.t_lnt_basic_center_code select centercode,centername, qscode FROM t_centercode ")
#重写
#spark.sql("insert overwrite table oracledb.t_lnt_basic_center_code select centercode,centername, qscode FROM t_centercode where centercode ='01'")
  
    # DataFrame转换成RDD
    #result = employee_result.rdd.map(lambda p: "centercode: " + p.centercode + "  centername: " + p.centername+" qscode"+p.qscode).collect()
  
    #打印RDD数据
  #  for centercode in result:
   #     print(centercode)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值