我在 hbase 中有這張名為“emp”的表。
hbase(main):006:0> create 'emp', 'personel data'
0 row(s) in 1.3110 seconds
我通過 put 命令在其中插入了 2 行。
hbase(main):020:0> scan 'emp'
ROW COLUMN CELL
1 column=personel data:name, age, gender, timestamp=1641624361341, value=Pratik, 24, Male
2 column=personel data:name, age, gender, timestamp=1641624514176, value=Emma, 21, Female
2 row(s) in 0.0320 seconds
但是,現在我想從 csv 檔案中添加資料。
[cloudera@quickstart ~]$ cat sample_kpi.csv
sam,24,m
emma,21,f
richard,23,m
susane,22,f
您可以看到我當前的作業目錄是:/home/cloudera并且在其中我有sample_kpi.csv. 因此,路徑=/home/cloudera/sample_kpi.csv
[cloudera@quickstart ~]$ pwd
/home/cloudera
[cloudera@quickstart ~]$ ls
avro data1 Documents emp.java external_jars kerberos Music part_dir rakeshdata sample_kpi.txt Videos
cloudera-manager Desktop Downloads enterprise-deployment.json external-unified kpifolder parcels Pictures rakeshdata1 sparkjars_exec workspace
cm_api.py devices.json eclipse express-deployment.json input.txt lib parquet_write Public sample_kpi.csv Templates zeyo_tab.java
所以,我已經撰寫了這個用于匯入資料的命令并運行了幾次,但它顯示錯誤。
hbase(main):015:0> $ hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=',' -Dimporttsv.columns=HBASE_ROW_KEY, personal_data:name, personal_data:age, personal_data:gender emp /home/cloudera/sample_kpi.csv
SyntaxError: (hbase):15: syntax error, unexpected null
$ hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=',' -Dimporttsv.columns=HBASE_ROW_KEY, personal_data:name, personal_data:age, personal_data:gender emp /home/cloudera/sample_kpi.csv
^
hbase(main):016:0> hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=',' -Dimporttsv.columns=HBASE_ROW_KEY, personal_data:name, personal_data:age, personal_data:gender emp /home/cloudera/sample_kpi.csv
SyntaxError: (hbase):16: syntax error, unexpected tSYMBEG
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=',' -Dimporttsv.columns=HBASE_ROW_KEY, personal_data:name, personal_data:age, personal_data:gender emp /home/cloudera/sample_kpi.csv
^
hbase(main):017:0> hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=',' -Dimporttsv.columns=HBASE_ROW_KEY, personal_data:name, personal_data:age, personal_data:gender emp /home/cloudera/sample_kpi.csv
SyntaxError: (hbase):17: syntax error, unexpected tSYMBEG
hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.separator=',' -Dimporttsv.columns=HBASE_ROW_KEY, personal_data:name, personal_data:age, personal_data:gender emp /home/cloudera/sample_kpi.csv
而且,我認為這一定會發生,因為我還沒有將 sample_kpi.csv 檔案匯入 hbase。所以嘗試匯入它,但我收到了這個"Permission denied"錯誤:
[cloudera@quickstart ~]$ hadoop dfs -put /home/cloudera/sample_kpi.csv /hbase
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.
put: Permission denied: user=cloudera, access=WRITE, inode="/hbase":hbase:supergroup:drwxr-xr-x
[cloudera@quickstart ~]$ hdfs dfs -put /home/cloudera/sample_kpi.csv /hbase
put: Permission denied: user=cloudera, access=WRITE, inode="/hbase":hbase:supergroup:drwxr-xr-x
有時它說: No such file or directory
[cloudera@quickstart ~]$ hdfs dfs -put /home/cloudera/sample_kpi.csv /etc/hbase
put: `/etc/hbase': No such file or directory
[cloudera@quickstart ~]$ hadoop dfs -put /home/cloudera/sample_kpi.csv /hbase
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.
有人可以告訴我錯誤到底是什么嗎?“為什么”會發生?!太感謝了!
uj5u.com熱心網友回復:
您的錯誤準確地說明了問題所在。您當前是 Cloudera 用戶。該檔案夾歸 hbase 用戶所有,不允許其他用戶寫入 -inode="/hbase":hbase:supergroup:drwxr-xr-x
權限適用于 HDFS,而不是您的本地檔案系統。
sudo su - hbase先運行才可以把資料放到/hbaseHDFS路徑,不,hdfs:///etc根本不存在,默認
除此之外,我不認為將檔案直接放入 Hbase 資料路徑是實際存盤它們的正確方法。您的語法錯誤是因為您將不帶引號的空格專案放在 for 的值中-Dimporttsv.columns,因此該命令將它們解釋為單獨的引數。此外,要匯入的用戶檔案的 HDFS 路徑將是/user/cloudera,而不是/home/cloudera
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/408204.html
標籤:
上一篇:為什么這個SpringDataJPA的name方法查詢給了我這個錯誤,而Eclipse強迫我回傳一個Optional<User>而不是一個簡單的User物件?
