⑴ hive初始化元資料庫後生成的文件在哪
導入數據
設置HADOOP_HOME
$ HADOOP_HOME=/path/to/some/hadoop sqoop import --arguments...
下載合適的Sqoop並解壓到硬碟,所謂合適即Sqoop的版本應該和Hadoop的版本相匹配。筆者的Hadoop版本是1.03,下載的Sqoop是版本1.4.2。
$ tar zvxf sqoop-1.4.2.bin__hadoop-1.0.0.tar.gz
下載合適的JDBC驅動,將下載的JDBC的驅動放到Sqoop的lib文件夾下。
導入數據
$ sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.56.111:1521:DBNAME --username USERNAME --password PASSWORD --verbose -m 1 --table TABLENAME
DBNAME:資料庫名
USERNAME:用戶名
PASSWORD:密碼
TABLENAME:表名
-m:導入數據的進程的並發數,默認是4。如果導入的數據不大的話,不妨設置成1,這樣導入更快。一般來說Sqoop會使用主鍵來平均地分割數據。並發導入的時候可以設置相關的分割列等等,具體的做法參考官方的文檔。
如果Oracle是安裝在遠程的電腦上,要確保Sqoop可以ping通Oracle所在的電腦。例如如果Oracle安裝在Win7上面,可能需要關閉Win7的防火牆。另外,需要將Oracle配置成可以遠程訪問的。
⑵ hive的元數據存儲在derby和mysql 中有什麼區別
定義 元數據最本質、最抽象的定義為:data about data (關於數據的數據)。它是一種廣泛存在的現象,在許多領域有其具體的定義和應用。 在數據倉庫領域中,元數據被定義為:描述數據及其環境的數據。一般來說,它有兩方面的用途。
⑶ 如何查看hive的元數據存儲位置
導入數據設置HADOOP_HOME
$ HADOOP_HOME=/path/to/some/hadoop sqoop import --arguments...
下載合適的Sqoop並解壓到硬碟,所謂合適即Sqoop的版本應該和Hadoop的版本相匹配。筆者的Hadoop版本是1.03,下載的Sqoop是版本1.4.2。
$ tar zvxf sqoop-1.4.2.bin__hadoop-1.0.0.tar.gz
下載合適的JDBC驅動,將下載的JDBC的驅動放到Sqoop的lib文件夾下。
導入數據
$ sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.56.111:1521:DBNAME --username USERNAME --password PASSWORD --verbose -m 1 --table TABLENAME
DBNAME:資料庫名
USERNAME:用戶名
PASSWORD:密碼
TABLENAME:表名
-m:導入數據的進程的並發數,默認是4。如果導入的數據不大的話,不妨設置成1,這樣導入更快。一般來說Sqoop會使用主鍵來平均地分割數據。並發導入的時候可以設置相關的分割列等等,具體的做法參考官方的文檔。
如果Oracle是安裝在遠程的電腦上,要確保Sqoop可以ping通Oracle所在的電腦。例如如果Oracle安裝在Win7上面,可能需要關閉Win7的防火牆。另外,需要將Oracle配置成可以遠程訪問的。
注意,用戶名和表名應該要是大寫的,除非它們在創建的時候是名字是放在引號中的大小寫混合的形式。
⑷ mysql存儲hive元數據有什麼好處
定義
元數據最本質、最抽象的定義為:data about data (關於數據的數據)。它是一種廣泛存在的現象,在許多領域有其具體的定義和應用。
在數據倉庫領域中,元數據被定義為:描述數據及其環境的數據。一般來說,它有兩方面的用途。首先,元數據能提供基於用戶的信息,如記錄數據項的業務描述信息的元數據能幫助用戶使用數據。其次,元數據能支持系統對數據的管理和維護,如關於數據項存儲方法的元數據能支持系統以最有效的方式訪問數據。具體來說,在數據倉庫系統中,元數據機制主要支持以下五類系統管理功能:(1)描述哪些數據在數據倉庫中;(2)定義要進入數據倉庫中的數據和從數據倉庫中產生的數據;(3)記錄根據業務事件發生而隨之進行的數據抽取工作時間安排;(4)記錄並檢測系統數據一致性的要求和執行情況;(5)衡量數據質量。
在軟體構造領域,元數據被定義為:在程序中不是被加工的對象,而是通過其值的改變來改變程序的行為的數據。它在運行過程中起著以解釋方式控製程序行為的作用。在程序的不同位置配置不同值的元數據,就可以得到與原來等價的程序行為。
在圖書館與信息界,元數據被定義為:提供關於信息資源或數據的一種結構化的數據,是對信息資源的結構化的描述。其作用為:描述信息資源或數據本身的特徵和屬性,規定數字化信息的組織,具有定位、發現、證明、評估、選擇等功能。
此外,元數據在地理界,生命科學界等頂域也有其相應的定義和應用。
元數據(Meta Data)是關於數據倉庫的數據,指在數據倉庫建設過程中所產生的有關數據源定義,目標定義,轉換規則等相關的關鍵數據。同時元數據還包含關於數據含義的商業信息,所有這些信息都應當妥善保存,並很好地管理。為數據倉庫的發展和使用提供方便。
元數據是一種二進制信息,用以對存儲在公共語言運行庫可移植可執行文件 (PE) 文件或存儲在內存中的程序進行描述。將您的代碼編譯為 PE 文件時,便會將元數據插入到該文件的一部分中,而將代碼轉換為 Microsoft 中間語言 (MSIL) 並將其插入到該文件的另一部分中。在模塊或程序集中定義和引用的每個類型和成員都將在元數據中進行說明。當執行代碼時,運行庫將元數據載入到內存中,並引用它來發現有關代碼的類、成員、繼承等信息。
元數據以非特定語言的方式描述在代碼中定義的每一類型和成員。元數據存儲以下信息:
程序集的說明。
標識(名稱、版本、區域性、公鑰)。
導出的類型。
該程序集所依賴的其他程序集。
運行所需的安全許可權。
類型的說明。
名稱、可見性、基類和實現的介面。
成員(方法、欄位、屬性、事件、嵌套的類型)。
屬性。
修飾類型和成員的其他說明性元素。
⑸ hive是怎麼樣保存元數據的
保存到mysql中的,也可以使用內置的derby和其他資料庫
⑹ hive 元數據是什麼
管理hive的數據,所有的表名,庫名,都是存儲在元數據中的
⑺ 如何將hive的元數據的存儲改為本地的oracel資料庫
導入數據
設置HADOOP_HOME
$ HADOOP_HOME=/path/to/some/hadoop sqoop import --arguments...
下載合適的Sqoop並解壓到硬碟,所謂合適即Sqoop的版本應該和Hadoop的版本相匹配。筆者的Hadoop版本是1.03,下載的Sqoop是版本1.4.2。
$ tar zvxf sqoop-1.4.2.bin__hadoop-1.0.0.tar.gz
下載合適的JDBC驅動,將下載的JDBC的驅動放到Sqoop的lib文件夾下。
導入數據
$ sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.56.111:1521:DBNAME --username USERNAME --password PASSWORD --verbose -m 1 --table TABLENAME
DBNAME:資料庫名
USERNAME:用戶名
PASSWORD:密碼
TABLENAME:表名
-m:導入數據的進程的並發數,默認是4。如果導入的數據不大的話,不妨設置成1,這樣導入更快。一般來說Sqoop會使用主鍵來平均地分割數據。並發導入的時候可以設置相關的分割列等等,具體的做法參考官方的文檔。
如果Oracle是安裝在遠程的電腦上,要確保Sqoop可以ping通Oracle所在的電腦。例如如果Oracle安裝在Win7上面,可能需要關閉Win7的防火牆。另外,需要將Oracle配置成可以遠程訪問的。
注意,用戶名和表名應該要是大寫的,除非它們在創建的時候是名字是放在引號中的大小寫混合的形式。
一個很奇怪的錯誤
筆者在導入數據的過程中,發現一個問題,就是導入時沒有提示任何錯誤,在HDFS中也看到生成了相關的文件,但是在Hive中使用命令show TABLES時卻沒有看到新導入的表格。此時有兩種解決方案。一種是在Hive中手動地使用CREAT命令創建出表格,然後再SELECT一個,會發現表裡有數據了。因此筆者猜測(只是猜測)可能是因為導入之後表格的元數據沒有寫入到Hive中。筆者查找了相關的資料,發現Hive默認是將元數據存儲在derby中,所以筆者考慮將derby換成MySQL。
方法:http://blog.sina.com.cn/s/blog_3fe961ae0101925l.html
將元數據存儲在MySQL後,再導入就發現沒有問題了。
增量導入
另外一個問題,如果我們要導入某個表中的新加入的部分,可以使用--check-column、--incremental、--last-value三個參數,--check-column指定要檢查的列,--incremental指定某種增加的模式,只有兩個合法的值,append 和lastmodified。如果--incremental為append,則Sqoop會導入--check-column指定的列的值大於--last-value所指定的值的記錄。如果--incremental為lastmodified,則Sqoop會導入--check-column指定的列的值(這是一個時間戳)近於--last-value所指定的時間戳的記錄。例如下面的命令可以導入列ID的值大於4的所有記錄。
$ sqoop import --hive-import --connect jdbc:oracle:thin:@192.168.56.111:1521:DBNAME --username USERNAME --password PASSWORD --verbose -m 1 --table TABLENAME --check-column ID --incremental append --last-value 4
⑻ Hive元資料庫是用來做什麼的,存儲哪些信息
本質上只是用來存儲hive中有哪些資料庫,哪些表,表的模式,目錄,分區,索引以及命名空間。為資料庫創建的目錄一般在hive數據倉庫目錄下。
⑼ impala怎麼判斷從hive里刷新那部分元數據
Impala 獲取hive 的 metadata
Impala 通常和Hive共用同一個metadata 資料庫(通常是MySQL/PostgreSQL), 所以Impala 能夠讀取到Hive的元數據信息. 如果Impala需要訪問Hive表, 需要將Hive metadata 刷新到impala中.
在Hive中Create/Drop表後, 或者HDFS rebalance,或者手工刪除HDFS的文件後, 則需要在impala中執行下面兩行命令:
INVALIDATE METADATA table_name;
describe table_name;
第一行命令 INVALIDATE METADATA 告訴impala 指定的 table 元數據已經過期, impala 將在下一次使用到該表時自動刷新元數據, 第二行命令即觸發impala去更新元數據, 以免將來真正使用該表耗時太久.
如果Impala已經知道了Hive表的存在後, 又通過Hive增加或刪除分區或alter table, 使用 refresh 命令即可更新元數據. refresh是對元數據進行增量更新, 和INVALIDATE METADATA相比, refresh命令使用成本低很多.
利用catalogd提供元數據服務。可以直接連DB也可以通過catalogd,一般是利用hive里的metastore獲取數據。Impala高效的原因是其將原始數據緩存下來,catalogd啟動會瀏覽緩存獲取數據
因為impla默認catalogd會緩存,因此如果你重啟的後,catalogd會將緩存數據存入到內存中,