博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spark sql简单示例
阅读量:6257 次
发布时间:2019-06-22

本文共 3405 字,大约阅读时间需要 11 分钟。

hot3.png

运行环境

集群环境:CDH5.3.0

具体JAR版本如下:

spark版本:1.2.0-cdh5.3.0

hive版本:0.13.1-cdh5.3.0

hadoop版本:2.5.0-cdh5.3.0

spark sql的JAVA版简单示例

  1. spark sql直接查询JSON格式的数据

  2. spark sql的自定义函数

  3. spark sql查询hive上面的表

import java.util.ArrayList;import java.util.List;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import org.apache.spark.api.java.function.Function;import org.apache.spark.sql.api.java.DataType;import org.apache.spark.sql.api.java.JavaSQLContext;import org.apache.spark.sql.api.java.JavaSchemaRDD;import org.apache.spark.sql.api.java.Row;import org.apache.spark.sql.api.java.UDF1;import org.apache.spark.sql.hive.api.java.JavaHiveContext;/** * 注意: * 使用JavaHiveContext时 * 1:需要在classpath下面增加三个配置文件:hive-site.xml,core-site.xml,hdfs-site.xml * 2:需要增加postgresql或mysql驱动包的依赖 * 3:需要增加hive-jdbc,hive-exec的依赖 * */public class SimpleDemo {    public static void main(String[] args) {        SparkConf conf = new SparkConf().setAppName("simpledemo").setMaster("local");        JavaSparkContext sc = new JavaSparkContext(conf);        JavaSQLContext sqlCtx = new JavaSQLContext(sc);        JavaHiveContext hiveCtx = new JavaHiveContext(sc);//        testQueryJson(sqlCtx);//        testUDF(sc, sqlCtx);        testHive(hiveCtx);        sc.stop();        sc.close();    }    //测试spark sql直接查询JSON格式的数据    public static void testQueryJson(JavaSQLContext sqlCtx) {        JavaSchemaRDD rdd = sqlCtx.jsonFile("file:///D:/tmp/tmp/json.txt");        rdd.printSchema();        // Register the input schema RDD        rdd.registerTempTable("account");        JavaSchemaRDD accs = sqlCtx.sql("SELECT address, email,id,name FROM account ORDER BY id LIMIT 10");        List
 result = accs.collect();        for (Row row : result) {            System.out.println(row.getString(0) + "," + row.getString(1) + "," + row.getInt(2) + ","                    + row.getString(3));        }        JavaRDD
 names = accs.map(new Function
() {            @Override            public String call(Row row) throws Exception {                return row.getString(3);            }        });        System.out.println(names.collect());    }    //测试spark sql的自定义函数    public static void testUDF(JavaSparkContext sc, JavaSQLContext sqlCtx) {        // Create a account and turn it into a Schema RDD        ArrayList
 accList = new ArrayList
();        accList.add(new AccountBean(1, "lily", "lily@163.com", "gz tianhe"));        JavaRDD
 accRDD = sc.parallelize(accList);        JavaSchemaRDD rdd = sqlCtx.applySchema(accRDD, AccountBean.class);        rdd.registerTempTable("acc");        // 编写自定义函数UDF        sqlCtx.registerFunction("strlength", new UDF1
() {            @Override            public Integer call(String str) throws Exception {                return str.length();            }        }, DataType.IntegerType);        // 数据查询        List
 result = sqlCtx.sql("SELECT strlength('name'),name,address FROM acc LIMIT 10").collect();        for (Row row : result) {            System.out.println(row.getInt(0) + "," + row.getString(1) + "," + row.getString(2));        }    }    //测试spark sql查询hive上面的表    public static void testHive(JavaHiveContext hiveCtx) {        List
 result = hiveCtx.sql("SELECT foo,bar,name from pokes2 limit 10").collect();        for (Row row : result) {            System.out.println(row.getString(0) + "," + row.getString(1) + "," + row.getString(2));        }    }}

转载于:https://my.oschina.net/cloudcoder/blog/467423

你可能感兴趣的文章
Oracle死锁一例(ORA-00060),锁表导致的业务死锁问题
查看>>
Swift中的函数常见写法
查看>>
iOS开发实战 - 完美解决UIScrollView嵌套滑动手势冲突
查看>>
IO流学习总结(下)---序列化 反序列化
查看>>
万物互联 | 无感停车解决方案探析
查看>>
用VR学习灾难逃生技巧,地震来了不再慌
查看>>
朱啸虎:区块链是伪风口的可能性大,任何创新都要经历死亡谷
查看>>
SQLAlchemy 1.3.1 发布,Python ORM 框架
查看>>
美国科学家训练AI,用路上车辆判断人们的政治立场
查看>>
全球约39亿人未接入互联网 中国互联网用户数达7.21亿
查看>>
美国移动运营商AT&T服务故障,导致大范围用户无法寻求紧急救助服
查看>>
Spring中基于AOP的@AspectJ
查看>>
AI+时尚的盛宴,FashionAI全球挑战赛进入复赛阶段
查看>>
mybatis系统学习(二)——使用基础mybatis代替原始jdbc
查看>>
Linux 网络编程之原始套接字
查看>>
【树莓派】Linux应用相关:自动删除n天前日志
查看>>
Azkaban Install and Schedule Job
查看>>
不仅是NRA球赛,手术也在VR直播了!
查看>>
android 空调遥控器——简单发送内容
查看>>
数字比较
查看>>