Oracle Big Data SQLについての基礎知識
「Oracle Big Data SQLとの統合の概要」で説明したように、Oracle Big Data SQLでは、データ・ソースをOracle外部表として表すことで、Oracle NoSQL Database表などの様々な外部データ・ソースにSQLでアクセスできます。これを実現するために、アクセス・ドライバと呼ばれるメカニズムが採用され、Oracle Big Data SQLシステムで実行されているOracleリレーショナル・データベースの表であるかのようにデータにアクセスします。Oracle Big Data SQLは、アクセスされるデータ・ソースごとに新しいアクセス・ドライバ・タイプを指定することで、外部表のアクセス・ドライバ・メカニズムを拡張します。Oracle Big Data SQLの導入前は、Oracle Database外部表メカニズムにより、次の2つのアクセス・ドライバ・タイプのみが定義されていました。
- フラット・ファイルから読み取るための
ORACLE_LOADERアクセス・ドライバ。 - Oracleデータベース間で独自の形式でデータを移行するための
ORACLE_DATAPUMPアクセス・ドライバ。
Big Data SQLの導入により、次の新しいアクセス・ドライバ・タイプが定義されています。
- Apache Hadoop分散ファイル・システムに格納されているデータにアクセスするための
ORACLE_HDFSアクセス・ドライバ。 - Apache Hive表またはOracle NoSQL Database表に格納されているデータにアクセスするための
ORACLE_HIVEアクセス・ドライバ。 - オブジェクト・ストアに格納されているファイルにアクセスするための
ORACLE_BIGDATAアクセス・ドライバ。
ORACLE_HDFSとORACLE_HIVEの両方のアクセス・ドライバで、Apache Hadoop MapReduceプログラミング・モデルを満たす多数のクラスを指定する必要があります。これらのクラスの一部は両方のアクセス・ドライバ・タイプに必要であるのに対して、ORACLE_HIVEアクセス・ドライバにのみ必要なクラスもあります。ORACLE_HDFSとORACLE_HIVEの両方に必要なクラス・タイプは次のとおりです。
org.apache.hadoop.mapreduce.InputFormatのインスタンスorg.apache.hadoop.mapreduce.OutputFormatのインスタンスorg.apache.hadoop.mapreduce.RecordReaderのインスタンスorg.apache.hadoop.mapreduce.InputSplitのインスタンス
パッケージorg.apache.hadoop.mapreduceに関する項を参照してください。
ORACLE_HIVEには必要で、ORACLE_HDFSには必要がないクラス・タイプは次のとおりです。
org.apache.hadoop.hive.ql.metadata.HiveStoarageHandlerのインスタンス(たとえば、Oracle NoSQL DatabaseTableStorageHandler)。org.apache.hadoop.hive.serde2.AbstractSerDeのインスタンス(たとえば、Oracle NoSQL DatabaseTableSerDe)。org.apache.hadoop.hive.serde2.objectinspector.ObjectInspectorのインスタンス。たとえば、Oracle NoSQL Databaseによって定義され、「Apache Hiveとの統合」の項で説明されている様々なObjectInspector実装。org.apache.hadoop.hadoop.hive.ql.metadata.HiveStoragePredicateHandlerのインスタンス。
Hive APIおよびパッケージoracle.kv.hadoop.hive.tableに関する項を参照してください。
ORACLE_HDFSアクセス・ドライバはHDFSファイルに格納されているデータのみを読み取ることができますが、ORACLE_HIVEアクセス・ドライバはHDFSファイルに格納されているデータのみでなく、Oracle NoSQL Database表などの他の場所に格納されているデータも読み取ることができます。次の各項で説明するように、Oracle NoSQL DatabaseとApache Hiveの統合は、Oracle NoSQL DatabaseとOracle Big Data SQLの統合において重要な役割を果たします。