CDHhadoop数据操作使用




1.词频量统计,基于cdh hadoop  自带的demo 运行指令如下:
wordcount----hadoop  jar /opt/cloudera/parcels/CDH/jars/hadoop-examples.jar wordcount  输入路径:/user/root/input 输出路径 /user/root/output
命令:/opt/cloudera/parcels/CDH/jars/hadoop-examples.jar wordcount  /user/root/input  /user/root/output

2.hive创建表:
Create external table testtable (
name string,
message string
) 
row format delimited fields terminated by '\t' 
lines terminated by '\n' 
location '/user/file.csv' 
tblproperties ("skip.header.line.count"="1", "skip.footer.line.count"="2");
就是上面sqltblproperties2个属性
skip.heaer.line.count 跳过文件行首多少行
skip.footer.line.count”跳过文件行尾多少行

DROP TABLE IF EXISTS 表名;
-- TAB2 TAB1 一样都是外部表
CREATE EXTERNAL TABLE 表名
(
   id INT,
   col_1 BOOLEAN,
   col_2 DOUBLE
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','//数据之间分割,csv格式之间是‘,’分割。/t  /n
LOCATION '/user/test;//加载数据文件地址
//加载hdfs数据到hive
load DATA INPATH '/user/test/data1.csv' INTO TABLE 表名//数据文件名。
例如:
load data inpath '/user/test/myfile/artrile.txt' into table arc;

3.权限问题
设置权限指令: hdfs dfs -chmod 777 /user/...   //将文件权限设置为可读可写等等 // 777是所有权限全都开通。

4.hive & impala语句使用规则:
Hiveimpala语句支持大部分sql,有个别方式不支持,具体差距:
https://www.cnblogs.com/HondaHsu/p/4346354.html
https://www.cnblogs.com/HondaHsu/p/4346354.html
Impala共享hive:INVALIDATE METADATA;
5.hbase规则
Hbase存储方式键值对<key,value>
常用命令:hbase shell
1)创建表:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>例如:create 'User','info'(创建一个User表,并且有一个info列族)
2)查看所有表:list
3)查看表详情:describe 'User'
4)删除指定的列族:alter 'User', 'delete' => 'info'
5) 插入数据:put <table>,<rowkey>,<family:column>,<value>例如:put 'User', 'row1', 'info:name', 'xiaoming           
6)根据rowKey查询某个记录:get <table>,<rowkey>,[<family:column>,....] 例如:get 'User', 'row2'
7)查询所有记录:scan 'User'
8)扫描前2条:scan 'User', {LIMIT => 2}
9)范围查询:scan 'User', {STARTROW => 'row2'}  ----scan 'User', {STARTROW => 'row2', ENDROW => 'row2'}
10)统计表记录数:count <table>, {INTERVAL => intervalNum, CACHE => cacheNum}例如:count 'User'
11)删除列:delete 'User', 'row1', 'info:age'
12)删除所有行:deleteall 'User', 'row2'
13)删除表中所有数据:truncate 'User'
14)禁用表:disable 'User'
15)启用表:enable 'User'
16)测试表是否存在:exists 'User'
17)删除表前,必须先disabledrop 'TEST.USER'
4.6.hivehbase的使用
命令: CREATE EXTERNAL TABLE h1
(id string, name string,age int,sex string)
STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' 
WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,info:name,info:age,info:sex") TBLPROPERTIES("hbase.table.name" = "User");
创建一个hive表加载hbase数据。
5.spark启动问题
1spark是独立于hadoop之外的;
2Spark RDD编程
SparkRDD是一个不可变的分布式对象集合。每个RDD被分为多个分区,这些分区运行在集群的不同的节点上。
RDD可以包含PythonJavaScala中的任意类型的对象,以及自定义的对象。
创建RDD的两种方法:
1 读取一个数据集(SparkContext.textFile()) : lines = sc.textFile("README.md")
2 读取一个集合(SparkContext.parallelize()) : lines = sc.paralelize(List("pandas","i like pandas"))
RDD的两种操作:
1 转化操作(transformation) : 由一个RDD生成一个新的RDD
2 行动操作(action) : RDD中的元素进行计算,并把结果返回
RDD的惰性计算:
可以在任何时候定义新的RDD,但Spark会惰性计算这些RDD。它们只有在第一次行动操作中用到的时候才会真正的计算。
此时也不是把所有的计算都完成,而是进行到满足行动操作的行为为止。
lines.first() : Spark只会计算RDD的第一个元素的值
常见的转化操作:
对一个RDD的转化操作:
原始RDD
1
2	scala> val rdd = sc.parallelize(List(1,2,3,3))
rdd: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[0] at parallelize at <console>:27
map() : 对每个元素进行操作,返回一个新的RDD
1
2	scala> rdd.map(x => x +1 ).collect()
res0: Array[Int] = Array(2, 3, 4, 4)
flatMap() : 对每个元素进行操作,将返回的迭代器的所有元素组成一个新的RDD返回
1
2	scala> rdd.flatMap(x => x.to(3)).collect()
res2: Array[Int] = Array(1, 2, 3, 2, 3, 3, 3)
filter() : 最每个元素进行筛选,返回符合条件的元素组成的一个新RDD
1
2	scala> rdd.filter(x => x != 1).collect()
res3: Array[Int] = Array(2, 3, 3)
distinct() : 去掉重复元素
1
2	scala> rdd.distinct().collect()
res5: Array[Int] = Array(1, 2, 3)
sample(withReplacement,fration,[seed]) : RDD采样,以及是否去重
  第一个参数如果为true,可能会有重复的元素,如果为false,不会有重复的元素;
  第二个参数取值为[0,1],最后的数据个数大约等于第二个参数乘总数;
  第三个参数为随机因子。
1
2
3
4
5
6
7
8	scala> rdd.sample(false,0.5).collect()
res7: Array[Int] = Array(3, 3)
 
scala> rdd.sample(false,0.5).collect()
res8: Array[Int] = Array(1, 2)
 
scala> rdd.sample(false,0.5,10).collect()
res9: Array[Int] = Array(2, 3)
对两个RDD的转化操作:
原始RDD
1
2
3
4
5	scala> val rdd1 = sc.parallelize(List(1,2,3))
rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[13] at parallelize at <console>:27
 
scala> val rdd2 = sc.parallelize(List(3,4,5))
rdd2: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[14] at parallelize at <console>:27
union() :合并,不去重
1
2	scala> rdd1.union(rdd2).collect()
res10: Array[Int] = Array(1, 2, 3, 3, 4, 5)
1
2	scala> rdd1.intersection(rdd2).collect()
res11: Array[Int] = Array(3)
intersection() :交集
subtract()  移除相同的内容
1
2	scala> rdd1.subtract(rdd2).collect()
res12:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值