SparkSQL,创建表,

1.首先检查Hadoop相关进程,是否已经启动。若未启动,切换到/apps/hadoop/sbin目录下,启动Hadoop。

jps  
cd /apps/hadoop/sbin  
./start-all.sh  

2.在Linux本地新建/data/spark5目录。

mkdir -p /data/spark5

3.切换到/data/spark5目录下,使用wget命令,下载http://172.16.103.12:60000/allfiles/spark5中的orders和order_items。

cd /data/spark5  
wget http://172.16.103.12:60000/allfiles/spark5/orders  
wget http://172.16.103.12:60000/allfiles/spark5/order_items 

4.首先,在HDFS上新建/myspark5目录,然后将/data/spark5目录下的orders与order_items文件,上传到HDFS的/myspark5目录下。

hadoop fs -mkdir /myspark5  
hadoop fs -put /data/spark5/orders /myspark5  
hadoop fs -put /data/spark5/order_items /myspark5

5.启动Spark Shell。

spark-shell

6.在spark-shell下,使用case class方式定义RDD,创建orders表。

val sqlContext = new org.apache.spark.sql.SQLContext(sc)  
import sqlContext.implicits._  
case class Orders(order_id:String,order_number:String,buyer_id:String,create_dt:String)  
val dforders = sc.textFile("/myspark5/orders").map(_.split('\t')).map(line=>Orders(line(0),line(1),line(2),line(3))).toDF()  
dforders.registerTempTable("orders")  

验证创建的表是否成功。

sqlContext.sql("show tables").map(t=>"tableName is:"+t(0)).collect().foreach(println)  
sqlContext.sql("select order_id,buyer_id from orders").collect 

 

7.在Spark Shell下,使用applyScheme方式定义RDD,创建order_items表。

import org.apache.spark.sql._  
import org.apache.spark.sql.types._  
val rddorder_items = sc.textFile("/myspark5/order_items")  
val roworder_items = rddorder_items.map(_.split("\t")).map( p=>Row(p(0),p(1),p(2) ) )  
val schemaorder_items = "item_id order_id goods_id"  
val schema = StructType(schemaorder_items.split(" ").map(fieldName=>StructField(fieldName,StringType,true)) )  
val dforder_items = sqlContext.applySchema(roworder_items, schema)  
dforder_items.registerTempTable("order_items")  

验证创建表是否成功。

sqlContext.sql("show tables").map(t=>"tableName is:"+t(0)).collect().foreach(println)  
sqlContext.sql("select order_id,goods_id from order_items ").collect  

8.将order表及order_items表进行join操作,统计该电商网站,都有哪些用户购买了什么商品。

sqlContext.sql("select orders.buyer_id, order_items.goods_id from order_items  join orders on order_items.order_id=orders.order_id ").collect  

9.退出Spark shell模式

exit  

下面演示Spark SQL模式

10.启动Spark SQL。

11.创建表orders及表order_items。

create table orders (order_id string,order_number string,buyer_id string,create_dt string)  
row format delimited fields terminated by '\t'  stored as textfile; 
create table order_items(item_id string,order_id string,goods_id string)  
row format delimited fields terminated by '\t'  stored as textfile;   

12.查看已创建的表。

show tables;  

表名后的false意思是该表不是临时表。

13.将HDFS中/myspark5下的orders表和order_items表中数据加载进刚创建的两个表中。

load data inpath '/myspark5/orders' into table orders;  
load data inpath '/myspark5/order_items' into table order_items;  

14.验证数据是否加载成功。

select * from orders;  
select * from order_items;  

15.处理文件,将order表及order_items表进行join操作,统计该电商网站,都有哪些用户购买了什么商品。

select orders.buyer_id, order_items.goods_id from order_items join orders on order_items.order_id=orders.order_id; 

 

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值