一骑脱、實驗
這里的實驗素材是參照 本地數(shù)據(jù)集上傳到數(shù)據(jù)倉庫Hive
1.上傳實驗數(shù)據(jù)到 hdfs
因為 spark竞滓、hbase、hive 和 hadoop 都可以很好的集成木张,因此傳到 hdfs 上對于后續(xù)的引用會很方便。
源數(shù)據(jù)在 點擊這里下載data_format.zip數(shù)據(jù)集端三。位于百度網(wǎng)盤(下載速度超惡心, 100kb每秒)舷礼,而我的服務器在海外,國際帶寬又比較慢郊闯,下載文件解壓出來接近3g大小妻献, 所以我這里采用了兩種方法。
unzip data_format.zip
head -n 1000000 user_log.csv > ~/ user_log_2.csv
scp ~/user_log_2.csv hadoop@server_ip:~/tmp_data
- 一些實驗团赁,不需要所有數(shù)據(jù)育拨,所以用 head 截取前 100 萬行。
- 另一種方式是通過國內(nèi)上傳到阿里云青島地區(qū)的 oss 上然痊,然后在境外下載這個外鏈至朗,速度可以到 10M/s, 貌似有專線剧浸。
- 如何繞過百度網(wǎng)盤限速 (todo)
傳至 hdfs
hdfs dfs -mkdir -p /dbtaobao/big_data/user_log # 創(chuàng)建 user_log 目錄锹引,用于映射表
hdfs dfs -put ~/tmp_data/user_log.csv /dbtaobao/big_data/user_log # 上傳本地文件到 hdfs
2.創(chuàng)建 HBASE 表 schema 并導入數(shù)據(jù)
user_log.csv 字段說明
1. user_id | 買家id
2. item_id | 商品id
3. cat_id | 商品類別id
4. merchant_id | 賣家id
5. brand_id | 品牌id
6. month | 交易時間:月
7. day | 交易事件:日
8. action | 行為,取值范圍{0,1,2,3},0表示點擊,1表示加入購物車唆香,2表示購買嫌变,3表示關(guān)注商品
9. age_range | 買家年齡分段:1表示年齡<18,2表示年齡在[18,24],3表示年齡在[25,29]躬它,4表示年齡在[30,34]腾啥,5表示年齡在[35,39],6表示年齡在[40,49]冯吓,7和8表示年齡>=50,0和NULL則表示未知
10. gender | 性別:0表示女性倘待,1表示男性,2和NULL表示未知
11. province| 收獲地址省份
啟動 hbase
$HADOOP_HOME/sbin/start_all.sh # 啟動 hadoop 各 daemon 服務
start_hbase.sh # 啟動 hbase
hbase shell # 打開 shell 與 hbase 交互
導入數(shù)據(jù)
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=',' -Dimporttsv.columns='HBASE_ROW_KEY,log:item_id,log:cat_id,log:merchant_id,log:brand_id,log:month,log:day,log:action,log:age_range,log:gender,log:province' user_log /dbtaobao/big_data/user_log/user_log.csv
# 出現(xiàn)以下錯誤
Caused by: java.lang.ClassNotFoundException: org.apache.htrace.SamplerBuilder
# 原因是只有 htrace-core-3.2.0-incubating.jar 含有該類文件
cp $HBASE_HOME/lib/client-facing-thirdparty/htrace-core-3.1.0-incubating.jar $HBASE_HOME/lib/
若 lib 下沒有 3.X 版本组贺,則需從 maven 倉庫下
cd $HBASE_HOME/lib && wget http://central.maven.org/maven2/org/apache/htrace/htrace-core/3.2.0-incubating/htrace-core-3.2.0-incubating.jar
3.hadoop生態(tài)常用端口
https://kontext.tech/docs/DataAndBusinessIntelligence/p/default-ports-used-by-hadoop-services-hdfs-mapreduce-yarn
spark-submit --repositories http://repo.hortonworks.com/content/groups/public/ --jars ~/jars/shc-core-1.1.1-2.1-s_2.11.jar --class=io.jiquan.example.spark.Main ./target/scala-2.11/spark-read-from-hdfs-and-write-to-hbase_2.11-1.1.jar