使用hdfs slurper 將資料匯入hdfs

2021-07-12 05:14:32 字數 2440 閱讀 5846

slurper 可以將任何格式的資料匯入hdfs, 這裡有

git clone [email protected]:alexholmes/hdfs-file-slurper.git

cd hdfs-file-slurper

mvn package
將target下的hdfs-slurper-0.1.8-package.tar.gz 解壓到 /usr/local目錄下(筆者的工作環境是ubuntu)

配置sluper,配置檔案在conf目錄下

slurper.conf 配置

#被傳輸資料的名稱

datasource_name =test

#資料源目錄,輸入到這的任何檔案都會自動複製到目標目錄中(中間會被複製到臨時目錄中)

src_dir = file:/data/hadoop/tmp/slurper/in

#工作目錄,來自資料來源的檔案在複製到目標目錄前被移入這個目錄

work_dir = file:/data/hadoop/tmp/slurper/work

#在複製完成後,檔案從工作目錄移入最終目錄,另外remove_after_copy可以設定被用於設定刪除原始檔,這時不能設定complete_dir

complete_dir = file:/data/hadoop/tmp/slurper/complete

remove_after_copy = false

#在複製檔案中遇到的任何錯誤都會被移入這個目錄

error_dir = file:/data/hadoop/tmp/slurper/error

#臨時目錄,檔案第一次被複製到目標檔案系統上的臨時目錄。然後檔案複製完成後,通過slurper將這個檔案移入目標檔案

dest_staging_dir = hdfs:/tmp/slurper/stage

#原始檔最終存放目錄

dest_dir = hdfs:/tmp/slurper/dest

file://uri 表示本地檔案系統,hdfs://uri表示hdfs中的檔案路徑

slurper-env.sh 中要配置hadoop bin檔案目錄

執行:1. 先建立 源檔案目錄 /data/hadoop/tmp/slurper/in 2.

bin/slurper.sh  --config-file conf/slurper.conf
3.將測試檔案複製 到源檔案目錄,然後就可以看到日誌,並且在hdfs上檢視檔案了

動態設定目標路徑:

在slurper bin 目錄下有一指令碼 sample-python.py

#

!/usr/bin/python

import

sys, os, re

#read the local file from standard input

input_file=sys.stdin.readline()

#extract the filename from the file

filename =os.path.basename(input_file)

#extract the date from the filename

match=re.search(r'

([0-9])([0-9])([0-9])

', filename)

year=match.group(1)

mon=match.group(2)

day=match.group(3)

#construct our destination hdfs file

hdfs_dest="

hdfs:/data/%s/%s/%s/%s

" %(year, mon, day, filename)

#write it to standard output

print hdfs_dest,

修改配置檔案:

#dest_dir = hdfs:/tmp/slurper/dest

script = /usr/local/hdfs-slurper-0.1.8/bin/sample-python.py

再次執行 slurper,然後將檔案複製到源檔案目錄,如果檔案 格式不符合正規表示式匹配結果,會報錯

生產環境中,可以使用bin/slurper-inittab.sh 指令碼連續操作

此外,sluerper可以將hdfs中的資料匯入本地系統!

將excel資料匯入SqlServer資料庫

下面是我見到的最好的從excel匯入資料到sqlserver的最好方法,並給出了需要注意的地方。1 將excel裡的資料匯入已經存在的表中,命令如下 insert into t1 select from openrowset microsoft.jet.oledb.4.0 excel 5.0 hdr...

將10進製數轉換成任意進製數

要想解決這個問題我們先來看看10進製轉2進製的 includemain for i j 1 i 0 i 將陣列逆序輸出 printf d a i printf n 我們再來看看10進製轉16進製制的 include main char b 16 scanf d n while n for i j 1...

將元件拼裝使用

兩個外掛程式 vue loader vue template compiler vue loader 功能將 vue 檔案中的三個模組,解析和轉換 vue 主件,提供了其中的 script,樣式 style,以及 template,在分別交給別的模組處理 script babel loader cs...