服务器本地文件加载到CarbonData与简单sql编写记录

服务器本地文件加载到CarbonData与简单sql编写记录

一、加载文件到CarbonData:

1、首先可以传送文件到大数据平台,命令如下:

scp -r -P 端口号 主机名:/本地目录/完整的文件名 ~/服务器目录/

2、服务器上传本地文件到HDFS,命令如下:

hdfs dfs -put ~/服务器本地目录/完整的文件名称 /user/hdfs/hdfs下的目录

3、导入hdfs文件到CarbonData,首先需要启动Spark。

第一步:
cd $SPARK_HOME;
第二步:
./bin/spark-shell --master yarn-client --driver-memory 1g --executor-cores 2 --executor-memory 2G
第三步:
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.CarbonSession._
val carbon = SparkSession.builder().config(sc.getConf).getOrCreateCarbonSession()
第四步:
创建数据库表
carbon.sql(s"""CREATE TABLE
                        IF NOT EXISTS 数据库.表名(
								  shopid string,
                                  url string,
								  price string,
								  title string,
								  count string,
								  createtime string,
                                  goodsid string)
                       STORED BY 'carbondata'""".stripMargin)
注:
创建错数据库表,可以使用如下命令删除。
carbon.sql("drop table 数据库.表名");
验证数据库表的语句。
carbon.sql("use 数据库")
carbon.sql("show tables").show

4、加载数据到CarbonData,命令如下:

carbon.sql(s"""load data inpath 'hdfs://主机ip:端口/user/hdfs/hdfs上的目录/完整的文件名'
into table 数据库.表名 OPTIONS('GLOBAL_SORT_PARTITIONS'='2','HEADER'='false',
'DATEFORMAT' = 'yyyy-MM-dd','TIMESTAMPFORMAT'='yyyy-MM-dd HH:mm:ss',
'BAD_RECORDS_LOGGER_ENABLE'='true', 'BAD_RECORD_PATH'='hdfs://主机ip:端口/user/错误文件_error', 
'BAD_RECORDS_ACTION'='REDIRECT')""".stripMargin);

5、扩展:

查看csv文件一共有多少行数据,使用如下命令:

wc -l xxx.csv

二、hdfs和sql的一些简单操作:

1、创建hdfs文件夹命令:

hdfs dfs -mkdir -p /user/hdfs/文件夹目录/

2、sql的搭配使用:

①、从一张表获取多少条数据插入到另一张表(条件:表1中没有,从表2插入数据到表1)。

insert into table 表1 
select a.* from 表2 a 
left join 表1 b on a.goodsid=b.goodsid
where b.goodsid is null limit 30000000

②、按条件查询店铺数据(条件:一张表,查询店铺销售额小于30000的店铺数量)。

select count(1) from 
(select shopid,sum(count) as shop_totalcount from 表名 group by shopid having shop_totalcount<30000) as a

③、按条件查询店铺数量(条件:两张表,查询店铺销售额小于30000的店铺数量)。

select count(1) from 
(select shopid,sum(sold*price) as shop_totalcount from
(SELECT * FROM 表1
UNION ALL
SELECT * FROM 表2)
group by shopid having shop_totalcount<30000) as a

温馨提示:该文章为本人自己创作,转载请标明出处。感谢各位!!!谢谢大家!!!
本人联系方式:
QQ:961094233
邮箱:961094233@qq.com

上一篇:Go 每日一库之 go-carbon,优雅的golang日期时间处理库


下一篇:java-并发编程-多线程设计模式-单例设计模式的七种写法