上篇文章我們探索了Apache ORC的發展史、目前Hadoop适配情況以及支援的資料類型。今天我們來看一下如何使用Apache ORC。
三、在Hive中使用
Hive可以說是ORC格式及程度最好的軟體了。下面讓我們看看如何在Hive裡面使用ORC和一些相關的配置。
Hive中的文法
在Hive裡面,如果您是建立表,那麼隻需要在表後增加“STORED AS ORC”語句即可。例如下面的表:istari。
CREATE TABLE istari (
name STRING,
color STRING
) STORED AS ORC;
如果要對現有的表或者表分區修改格式為ORC,可以直接使用ALTER文法,格式如下:
ALTER TABLE istari SET FILEFORMAT ORC;
另外,從Hive 0.14開始,使用者可以通過使用CONCATENATE指令文法來手動合并ORC小檔案。執行該指令後,不必重新序列化檔案就能在類型級别進行合并。以下是文法參考:
ALTER TABLE istari [PARTITION partition_spec] CONCATENATE;
如果想要擷取ORC檔案資訊,可以使用Hive的orcfiledump指令。如下:
% hive --orcfiledump <path_to_file>
從Hive 1.1開始,指令增加了-d參數。如下:
% hive --orcfiledump -d <path_to_file>
四、在Python中使用
在Python開發中,如果要使用ORC,可以使用Apache Arrow項目的PyArrow包,或者Dask包,以下是如何安裝這兩個包并展示一個使用例子:
PyArrow包安裝和使用
安裝文法:
pip3 install pyarrow==7.0.0
pip3 install pandas
讀寫ORC檔案的例子:
In [1]: import pandas as pd
In [2]: import pyarrow as pa
In [3]: from pyarrow import orc
In [4]: orc.write_table(pa.table({"col1": [1, 2, 3]}), "test.orc")
In [5]: orc.read_table("test.orc").to_pandas()
Out[5]:
col1
0 1
1 2
2 3
Dask包安裝和使用
pip3 install "dask[dataframe]==2022.2.0"
pip3 install pandas
讀寫ORC檔案:
In [1]: import pandas as pd
In [2]: import dask.dataframe as dd
In [3]: pf = pd.DataFrame(data={"col1": [1, 2, 3]})
In [4]: dd.to_orc(dd.from_pandas(pf, npartitions=2), path="/tmp/orc")
Out[4]: (None,)
In [5]: dd.read_orc(path="/tmp/orc").compute()
Out[5]:
col1
0 1
1 2
2 3
五、在Spark中的使用
Apache Spark對ORC的內建也很好,下面就讓我們看看在Spark裡面如何使用ORC和一些相關的配置吧。
Spark中的文法
在Spark的建表語句中,你可以少寫幾個字母,隻需要在語句最後增加USING ORC即可:
CREATE TABLE istari (
name STRING,
color STRING
) USING ORC;
如果想擷取ORC檔案的資訊,可以使用orc-tools指令,如下:
% orc-tools meta <path_to_file>
如果要現實ORC檔案的資料,使用如下指令:
% orc-tools data <path_to_file>