spark抽取mysql数据到hive,Spark 整合hive 实现数据的读取输出

实验环境: linux centOS 6.7 vmware虚拟机

spark-1.5.1-bin-hadoop-2.1.0

apache-hive-1.2.1

eclipse 或IntelJIDea 本次使用eclipse.

代码:import org.apache.spark.SparkConf;

import org.apache.spark.api.java.JavaSparkContext;

import org.apache.spark.sql.DataFrame;

import org.apache.spark.sql.hive.HiveContext;

public class SparkOnHiveDemo {

public static void main(String[] args) {

// 首先还是创建SparkConf

SparkConf conf = new SparkConf().setAppName("HiveDataSource");

// 创建JavaSparkContext

JavaSparkContext sc = new JavaSparkContext(conf);

// 创建HiveContext,注意,这里,它接收的是SparkContext作为参数,不是JavaSparkContext

HiveContext hiveContext = new HiveContext(sc.sc());

//1.可以使用HiveContext 下面的sql(xxx语句)执行HiveSQL语句

//1 .删除表,创建表

// stars_infos ,stars_scores

hiveContext.sql("DROP TABLE IF EXISTS stars_infos");

hiveContext.sql("CREATE TABLE IF NOT EXISTS stars_infos(name STRING,age INT) "

+ "row format delimited fields terminated by ","");

//2.向表里面导入数据

hiveContext.sql("LOAD DATA "

+ "LOCAL INPATH "

+ ""/root/book/stars_infos.txt" "

+ "INTO TABLE stars_infos");

hiveContext.sql("DROP TABLE IF EXISTS stars_scores");

hiveContext.sql("CREATE TABLE IF NOT EXISTS stars_scores(name STRING,score INT) "

+ "row format delimited fields terminated by ","");

hiveContext.sql("LOAD DATA "

+ "LOCAL INPATH "

+ ""/root/book/stars_score.txt" "

+ "INTO TABLE stars_scores");

//3.从一张已经存在的hive表里面拿数据,转换为DF

DataFrame superStarDataFrame = hiveContext.sql("SELECT si.name,si.age,ss.score "

+ "FROM stars_infos si "

+ "JOIN stars_scores ss ON si.name=ss.name "

+ "WHERE ss.score>=90");

//4.把DF的数据再持久化到hive中去,千万别和registerTemtable搞混了

hiveContext.sql("DROP TABLE IF EXISTS superStar");

superStarDataFrame.saveAsTable("superStar");

//5.直接从Hive中得到DF

hiveContext.table("superStar").show();

sc.close();

}

}

元数据:

可以下载附件,然后上传到指定的目录下。

把程序打包jar后上传到linux指定的目录下,写一个脚本。脚本附件见正文。具体内容修改即可。

运行脚本就可以了。当然要保证MySQL数据库正常,hive正常。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值