很难找到spark-sql cli使用的教程,总结下
一、启动方法
/data/spark-1.4.0-bin-cdh4/bin/spark-sql --master spark://master:7077 --total-executor-cores 10 --executor-memory 1g --executor-cores 2 注:/data/spark-1.4.0-bin-cdh4/为spark的安装路径 /data/spark-1.4.0-bin-cdh4/bin/spark-sql –help 查看启动选项 --master MASTER_URL 指定master url
--executor-memory MEM 每个executor的内存,默认为1G
--total-executor-cores NUM 所有executor的总核数
-e <quoted-query-string> 直接执行查询SQL -f <filename> 以文件方式批量执行SQL 二、Spark sql对hive支持的功能 1、查询语句:SELECT GROUP BY ORDER BY CLUSTER BY SORT BY
2、hive操作运算:
1) 关系运算:= ==, <>, <, >, >=, <=
2) 算术运算:+, -, *, /, %
3) 逻辑运算:AND, &&, OR, ||
4) 复杂的数据结构
5) 数学函数:(sign, ln, cos, etc)
6) 字符串函数:
3、 UDF
4、 UDAF 5、 用户定义的序列化格式
6、join操作:JOIN {LEFT|RIGHT|FULL} OUTER JOIN LEFT SEMI JOIN CROSS JOIN
7、 unions操作:
8、 子查询: SELECT col FROM ( SELECT a + b AS col from t1) t2
9、Sampling
10、 Explain
11、 分区表
12、 视图
13、 hive ddl功能:CREATE TABLE、CREATE TABLE AS SELECT、ALTER TABLE 14、 支持的数据类型:TINYINT SMALLINT INT BIGINT BOOLEAN FLOAT DOUBLE STRING BINARY TIMESTAMPDATE ARRAY MAP STRUCT 三、Spark sql 在客户端编程方式进行查询数据
1、启动spark-shell
./spark-shell --master spark://master:7077 --total-executor-cores 10 --executor-memory 1g --executor-cores 2
2、编写程序
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val df = sqlContext.read.json("../examples/src/main/resources/people.json")
查看所有数据:df.show()
查看表结构:df.printSchema()
只看name列:df.select("name").show()
对数据运算:df.select(df("name"), df("age") + 1).show()
过滤数据:df.filter(df("age") > 21).show() 分组统计:df.groupBy("age").count().show() 1、查询txt数据
import sqlContext.implicits._
case class Person(name: String, age: Int)
val people = sc.textFile("../examples/src/main/resources/people.txt").map(_.split(",")).map(p => Person(p(0), p(1).trim.toInt)).toDF()
people.registerTempTable("people")
val teenagers = sqlContext.sql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19")
2、parquet文件
val df = sqlContext.read.load("../examples/src/main/resources/users.parquet")
3、hdfs文件 val df = sqlContext.read.load("hdfs://namenode.Hadoop:9000/user/hive/warehouse/spark_test.db/test_parquet/part-r-00001.gz.parquet")
4、保存查询结果数据
val df = sqlContext.read.load("../examples/src/main/resources/users.parquet") df.select("name", "favorite_color").write.save("namesAndFavColors.parquet“) 四、Spark sql性能调优 缓存数据表:sqlContext.cacheTable("tableName") 取消缓存表:sqlContext.uncacheTable("tableName") spark.sql.inMemoryColumnarStorage.compressedtrue 当设置为true时,Spark SQL将为基于数据统计信息的每列自动选择一个压缩算法。
spark.sql.inMemoryColumnarStorage.batchSize 10000 柱状缓存的批数据大小。更大的批数据可以提高内存的利用率以及压缩效率,但有OOMs的风险 转载注明出处

最新文章

  1. 【Pyrosim案例】01:空气流动
  2. .net学习笔记--文件读写的几种方式
  3. BootStrap安装
  4. Webbrowers控件的小技巧
  5. C语言中exit()与return的区别
  6. Android中特殊图形的生成样例
  7. Myeclipse新建 配置Hibernate
  8. Hadoop 新生报道(四) WordCount
  9. 使用Aes对称加密解密Web.Config数据库连接串
  10. 开源网络监控管理系统:OpenNMS
  11. 巨杉数据库加入CNCF云原生应用计算基金会,共建开源技术生态
  12. myBatis之Clob &amp; Blob
  13. 蓝牙HID协议笔记【转】
  14. 51nod算法马拉松B
  15. Android--------TabLayout实现新闻客户端顶部导航栏
  16. 移动平台的WebApp之Meta标签
  17. Android JNI和NDK学习(02)--静态方式实现JNI(转)
  18. Preference Learning——Object Ranking
  19. C++ 值传递、址传递、引用传递
  20. android获取https证书

热门文章

  1. JS基础_运算符的优先级
  2. Laravel 实现多级控制器(实现Api区分版本)
  3. 分库分布的几件小事(五)MYSQL读写分离
  4. CSS3总结四:盒模型(box)
  5. java 中 get post
  6. Spring自定义标签的实现
  7. python之字典一
  8. 构建虚拟工控环境系列 - 罗克韦尔虚拟PLC
  9. IPC之sem.c源码解读
  10. Content type &#39;application/x-www-form-urlencoded;charset=UTF-8&#39; not supported