我剛接觸 hadoop 等。通過直線連接到 hiveserver2。然后我創建表:
create table test02(id int, name string);
表創建,我嘗試插入值:
insert into test02(id, name) values (1, "user1");
什么也沒有發生。table02 和 values__tmp__table__1 已創建,但它們都是空的。Hadoop目錄“/user/$username/warehouse/test01”為空。
0: jdbc:hive2://localhost:10000> insert into test02 values (1,"user1");
No rows affected (2.284 seconds)
0: jdbc:hive2://localhost:10000> select * from test02;
------------ --------------
| test02.id | test02.name |
------------ --------------
------------ --------------
No rows selected (0.326 seconds)
0: jdbc:hive2://localhost:10000> show tables;
------------------------
| tab_name |
------------------------
| test02 |
| values__tmp__table__1 |
------------------------
2 rows selected (0.137 seconds)
uj5u.com熱心網友回復:
當 hive 需要在操作期間管理中間資料時,就會創建像這樣的臨時表。Hive 會在創建臨時表的 Hive 會話結束時自動洗掉所有臨時表。如果您關閉會話并再次打開它,您將找不到臨時表。
https://docs.cloudera.com/HDPDocuments/HDP2/HDP-2.5.0/bk_data-access/content/temp-tables.html
像這樣插入資料 ->
插入 test02 值(999,“user_new”);
資料將被插入到 test02 和一個臨時表中,如 values__tmp__table__1(臨時表將在 hive 會話之后消失)。
uj5u.com熱心網友回復:
其實我自己找到了答案。我是 hadoop&co 的新手,所以它不是很明顯。
首先,我將 hive 日志記錄設定為 ERROR 級別以查看問題:
- 找到 hive-exec-log4j2.properties({你的配置單元目錄}/conf/)
- 查找 property.hive.log.level 并設定值 ERROR (..log.level = ERROR)
然后在通過直線執行命令(插入)時,我看到了所有錯誤。主要內容是“有 0 個資料節點正在運行,此操作中未排除任何節點”。
在這里找到了同樣的問題。洗掉所有 /tmp/* 檔案的第一個答案(存盤了我所有的本地 hdfs 資料)幫助了我。然后,就像第一次一樣,我初始化了 namenode(-format)和 hive(運行了我的 metahive 腳本)。
問題已解決,但實際上又發生了另一個問題:插入執行 25 秒以上。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/366090.html
