11.2 DataFrame操作,集合转换

SparkConf conf = new SparkConf().setAppName("DataFrameOps").setMaster("local");

JavaSparkContext sc = new JavaSparkContext(conf);

/**

* 若想使用SparkSQL必须创建SQLContext 必须是传入SparkContext 不能是SparkConf

*/

SQLContext sqlContext = new SQLContext(sc);

/**

* 创建一个本地的集合 集合中元素的格式 json 类型String

*/

List<String> nameList = Arrays.asList(

"{'name':'zhangsan', 'age':55}",

"{'name':'lisi', 'age':30}",

"{'name':'lisisi', 'age':30}",

"{'name':'wangwu', 'age':19}");

List<String> scoreList = Arrays.asList(

"{'name':'zhangsan','score':100}",

"{'name':'lisi','score':99}" );

/**

* 并行化成一个rdd 现在rdd中元素格式 json格式

*/

JavaRDD<String> nameRDD = sc.parallelize(nameList);

JavaRDD<String> scoreRDD = sc.parallelize(scoreList);

DataFrame nameDF = sqlContext.read().json(nameRDD);

DataFrame scoreDF = sqlContext.read().json(scoreRDD);

/**

* SELECT nameTable.name,nameTable.age,scoreTable.score

* FROM nameTable JOIN nameTable ON (nameTable.name == scoreTable.name)

*/

nameDF.join(scoreDF, nameDF.col("name").$eq$eq$eq(scoreDF.col("name")))

.select(nameDF.col("name"),nameDF.col("age"),scoreDF.col("score")).show();

 

nameDF.registerTempTable("name");

scoreDF.registerTempTable("score");

String sql = "SELECT name.name,name.age,score.score "

+ "FROM name join score ON (name.name = score.name)";

sqlContext.sql(sql).show();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值