この章では、ビッグ・データに対するRのサポートについて説明します。内容は次のとおりです。
注意:
Oracle R Advanced Analytics for Hadoopの旧名称は、Oracle R Connector for Hadoop (ORCH)です。ORCHという表記は、下位互換性のためにこのドキュメントおよび製品で引き続き使用されています。
Oracle R Advanced Analytics for Hadoopには、次のものが用意されています。
汎用計算フレームワーク: このフレームワークでは、R言語を使用してカスタム・ロジックをマッパーまたはリデューサとして記述できます。コードは、Hadoopクラスタで使用可能な計算リソースとストレージ・リソースを使用する分散並列方式で実行されます。
Hive表を操作するためのRインタフェース: これはOracle R Enterpriseの透過レイヤーと似ていますが、いくつかの機能が制限されています。
パラレルに分散された事前パッケージ済のアルゴリズム・セット。
Apache Sparkのサポート。YARNを使用してSparkクラスタを動的に形成するHadoopクラスタ上または専用のスタンドアロンのSparkクラスタ上で、予測分析関数を実行できます。Sparkの実行は、spark.connect()およびdisconnect() functions.関数を使用して切り替えられます。
Sparkを使用してニューラル・ネットワーク分析関数(orch.neural)を実行する機能。これによりMapReduceの実行の全体に渡ってパフォーマンスを大幅に改善します。
Oracle R Advanced Analytics for Hadoopの説明は次のとおりです。
Hadoopディストリビューションの一部であるユーティリティHadoop Streaming上に構築され、任意の実行可能ファイルまたはスクリプトをマッパーまたはリデューサとするMapジョブまたはReduceジョブの作成および実行を可能にします。
クライアント・サーバー構成でHadoopクラスタを使用するRユーザー用に設計されています。クライアント構成は、Oracle R Advanced Analytics for HadoopがデプロイされているHadoopディストリビューションの要件に従う必要があります。
HDFSおよびHIVEがクライアント・ノードからHadoopクラスタに対して通信を行うためにコマンドライン・インタフェースを使用します。
Rで記述されたユーザー提供のマッパー関数およびリデューサ関数によって簡単に処理できるように、データの入力ストリームをRデータ・フレーム・オブジェクトに変換するために必要なロジックを作成します。
Sqoopユーティリティを使用して、RユーザーがOracleのデータベース表またはビューのデータを、HDFSファイルとしてHadoopに移動できます。同様に、移動するデータ・サイズおよびセキュリティ要件に応じてSqoopユーティリティまたはOracle Loader for Hadoopユーティリティを使用して、データをHDFSファイルからOracle Databaseに戻すことができます。
パフォーマンスを重視する分析ワークロードで、入力および出力でRのバイナリRData表現をサポートします。区切り表現とRData表現との間の変換ユーティリティはOracle R Advanced Analytics for Hadoopの一部として使用できます。
様々なHadoopディストリビューション間での類似性および違いを管理するHadoop Abstraction Layer (HAL)を含みます。ORCHは、起動時にHadoopバージョンを自動検出します。
Oracle R Advanced Analytics for Hadoopには、Rパッケージのコレクションが組み込まれており、次の機能を提供します。
次の要素を使用するためのインタフェース:
Apache Hive表
Apache Hadoop計算インフラストラクチャ
ローカルなR環境
Oracle Database表
独自のバイナリRData表現
Apache SparkのRDDオブジェクト
次の要素に対する予測分析手法:
線形回帰
一般化線形モデル
ニューラル・ネットワーク
低ランクの行列因数分解モデルを使用した行列補完
Non-Negative Matrix Factorization
k-Meansクラスタリング
主要コンポーネント分析
多変量分析
ORAAH 2.6には、Sparkでのフル・スタックの予測モデリング・アルゴリズムが導入されています。線形モデル技術(線形回帰、LASSO、リッジ回帰)に加えてGLM、SVM、k-Means、ガウス混合クラスタリング、決定木、ランダムフォレストおよび勾配ブースティング・ツリー、PCAおよびSVDなど、多くのSpark MLlibの機能が統合されています。既存のORAAHのSparkのカスタムアルゴリズムは、LMおよびGLMの両方に対する線形モデルおよびステップワイズ機能が加わり、強化されています。
これらの手法にはRインタフェースがありますが、Oracle R Advanced Analytics for Hadoopでは、このインタフェースをJavaまたはRで分散並列MapReduceジョブとして実装しているため、クラスタのすべてのノードを活用できます。
このパッケージは、他のRパッケージと同様にインストールしてロードします。簡単なR関数を使用して、次のようなタスクを実行できます。
Hive対応透過層を使用したHDFSデータへのアクセスとデータの変換
マッパーとリデューサを記述するためのR言語の使用
Rメモリー、ローカル・ファイル・システム、HDFS、HiveおよびOracle Databaseインスタンスの間でデータをコピーします。
RからHiveデータを透過的に操作します。
Hadoop MapReduceジョブとしてRプログラムを実行し、それらの場所に結果を返します。
Oracle R Advanced Analytics for Hadoopを使用すると、非クラスタ(ローカル)実行とHadoopクラスタ実行の両方で、MapReduceジョブをRから発行できます。
Oracle R EnterpriseとOracle R Advanced Analytics for Hadoopをデータベース・サーバーで一緒に使用する場合、DBMS_SCHEDULERを使用して、ORCH関数を含むスクリプトを実行するようにデータベース・ジョブをスケジュールできます。
Oracle R Advanced Analytics for Hadoopを使用するには、MapReduceプログラミング、Rプログラミングおよび統計手法をよく理解しておく必要があります。
Oracle R Advanced Analytics for Hadoopでは、次の接頭辞の関数を使用して、ローカルRクライアントからApache Hadoopへのアクセスを提供します。
hadoop: Hadoop MapReduceへのインタフェースを提供する関数を特定します。
hdfs: HDFSへのインタフェースを提供する関数を特定します。
orch: 様々な関数を特定します。orchはORCH関数の一般的な接頭辞です。
ore: Hiveデータストアへのインタフェースを提供する関数を特定します。
Oracle R Advanced Analytics for Hadoopは、主なオブジェクト・タイプとしてデータ・フレームを使用しますが、HDFSとのデータ交換を行うためにベクトルや行列でも機能できます。APIは、Rの数字、整数および文字のデータ型をサポートします。
APIのすべてがORCHライブラリに含まれます。関数については、「Oracle R Advanced Analytics for Hadoop関数」を参照してください。
関連項目:
RプロジェクトのWebサイト(http://www.r-project.org/)
Oracle R Advanced Analytics for Hadoopでは、HDFSディレクトリ、HIVE表、またはデータのバイナリRData表現に存在するデリミタ付きテキスト・ファイルを操作できます。Oracle R Advanced Analytics for Hadoopが編成するマップの少ない計算に対する入力データがHDFSに存在しない場合、計算を起動する前にデータのコピーがHDFSに自動的に作成されます。
Oracle R Advanced Analytics for Hadoopがデリミタ付きテキスト・ファイルを処理できるようにするには、そのファイルに関連付けられているメタデータを判別し、データ・ファイルとともに格納されているファイルのメタデータを取得します。ファイルは__ORCHMETA__という名前になります。メタデータには次のような情報が含まれています。
ファイルにキーが含まれている場合は、キー区切りであるデリミタ
値区切りであるデリミタ
ファイル内の列の番号および列のデータ型
列のオプションの名前
分類列のディクショナリ情報
その他のOracle R Advanced Analytics for Hadoop固有のシステム・データ
Oracle R Advanced Analytics for Hadoopは、メタデータ・ファイルを作成するためにhdfs.attach()呼び出しの一部としてHDFSオブジェクトで自動メタデータ検出手順を実行します。HIVE表を操作するとき、__ORCHMETA__ファイルがHIVE表のdefinition2から自動的に作成されます。
Oracle R Advanced Analytics for Hadoopは、I/Oパフォーマンスのために、入力データをオプションでRのバイナリRData表現に変換できます。このI/Oパフォーマンスは純粋にJavaベースのマップ削減実装と同等になります。
Oracle R Advanced Analytics for HadoopはHDFSファイルから行ストリームを取得し、それらをデータ・フレーム・オブジェクト(または、RData表現が使用されている場合は、オプションでデータ・フレーム・オブジェクトから生成した、またはそのままのマトリックス・オブジェクト、ベクトル・オブジェクトまたはリスト・オブジェクト)としてフォーマットして、Rで記述されたマップ済関数に提供します。こうするためには、Oracle R Advanced Analytics for Hadoopは、データ・フレームの列になるトークン・タイプおよびデータ型を認識する必要があります。Oracle R Advanced Analytics for Hadoopは、Rの機能を使用して入力行ストリームのトークンを解析および解釈します。欠落した値がRの"NA"トークンを使用して表現されていない場合、hdfs.attach()のna.strings引数で明示的に識別できます。
同じキー区切りおよび値区切りのデリミタ付きテキスト・ファイルは、別のキー区切りおよび値区切りを持つファイルより優先されます。同じキー区切りおよび値区切りを持つファイルの読取りパフォーマンスは、異なるキー区切りおよび値区切りを持つファイルの約2倍の速さです。
キー区切りおよび値区切りは、hdfs.attach()のkey.sep引数およびval.sep引数を使用して指定するか、または出力HDFSデータ用のMapReduceジョブの実行時に指定できます。
バイナリRData表現は、Oracle R Advanced Analytics for Hadoopの入力データの最もパフォーマンス効率の高い表現です。可能であれば、パフォーマンスが重要な分析にはこのバイナリ・データ表現の使用をお薦めします。
HDFSに格納されるデータにOracle R Advanced Analytics for Hadoopがアクセスするには、入力ファイルが次の要件に従う必要があります。
MapReduceジョブの入力ファイルはすべて、1つの論理ファイルの一環として1つのディレクトリに格納される必要があります。有効なHDFSディレクトリ名とファイル名の拡張子が受け入れられます。
該当ディレクトリ内の、アンダースコア(_)で始まる名前のファイルは無視されます。
デリミタはすべてサポートされており、キーと値のデリミタは異なってもかまいません。
また、最高のI/Oパフォーマンスを実現するために、RからのRdata表現を使用してデリミタ付きファイルをバイナリ形式に変換できます。
Apache Hiveは、HiveQLと呼ばれる問合せ言語(SQLとよく似ている)によって、代替のストレージおよび取得メカニズムをHDFSファイルに提供します。Hiveでは、分散処理にMapReduceが使用されます。ただし、データは構造化され、データ検出をサポートする追加のメタデータがあります。Oracle R Advanced Analytics for HadoopではHiveQLのデータ準備と分析機能が使用されますが、R言語構文も使用できます。
関連項目:
Apache HiveのWebサイト(http://hive.apache.org)
接頭辞にoreが付くR関数(ore.connectなど)を使用して、Hiveへ接続し、Hive表オブジェクトを分析および変換できます。Oracle R Enterpriseも使用している場合は、これらの関数を認識します。Oracle R Enterpriseのore関数は、Oracle Databaseでオブジェクトを作成して管理し、Oracle R Advanced Analytics for Hadoopのore関数は、Hiveデータベースでオブジェクトを作成して管理します。一度に1つのデータベース(HiveまたはOracle Databaseのいずれか)に接続できますが、同時に両方のデータベースに接続することはできません。
注意:
Oracle R Enterpriseを設定および使用するための要件と手順の詳細は、Oracle R Enterpriseライブラリ(http://docs.oracle.com/cd/E40980_01/)を参照してください。
たとえば、ore.connect(type="HIVE")は、デフォルトのHIVE database.ore.hiveOptions(dbname='dbtmp')との接続を確立し、デフォルト・データベースを変更できるようにします。一方、ore.showHiveOptions()は、現在のデフォルトのHIVEデータベースの検査を可能にします。
OREのas.ore.*関数とis.ore.*関数のリストは、表8-7を参照してください。
Oracle R Advanced Analytics for Hadoopは、次のメソッドを含む標準汎用R関数もオーバーロードしてHiveオブジェクトを操作します。
casefold、chartr、gsub、nchar、substr、substring、tolower、toupper
このリリースでは、greplやsubはサポートされません。
attach、show
[、$、$<-、[[、[[<-
サブセット関数: head、tail
メタデータ関数: dim、length、NROW、nrow、NCOL、ncol、names、names<-、colnames、colnames<-
変換関数: as.data.frame、as.env、as.list
算術演算子: +、-、*、^、%%、%/%、/
Compare、Logic、xor、!
テスト関数: is.finite、is.infinite、is.na、is.nan
数学的変換: abs、acos、asin、atan、ceiling、cos、exp、expm1、floor、log、log10、log1p、log2、logb、round、sign、sin、sqrt、tan、trunc
基礎統計: colMeans、colSums、rowMeans、rowSums、Summary、summary、unique
by、merge
unlist、rbind、cbind、data.frame、eval
このリリースでは、dimnames、interaction、max.col、row.names、row.names<-、scale、split、subset、transform、withまたはwithinはサポートされません。
ifelse、Logic、xor、!
サポートされません。
算術演算子: +、-、*、^、%%、%/%、/
テスト関数: is.finite、is.infinite、is.nan
abs、acos、asin、atan、ceiling、cos、exp、expm1、floor、log、log1p、log2、log10、logb、mean、round、sign、sin、sqrt、Summary、summary、tan、trunc、zapsmall
このリリースでは、atan2、besselI、besselK、besselJ、besselY、diff、factorial、lfactorial、pmax、pminまたはtabulateはサポートされません。
show、length、c
テスト関数: is.vector、is.na
変換関数: as.vector、as.character、as.numeric、as.integer、as.logical
[, [<-, |
by、Compare、head、%in%、paste、sort、table、tail、tapply、unique
このリリースでは、interaction、lengthb、rankまたはsplitはサポートされません。
例8-1に、簡単なデータ準備とデータ処理を示します。詳細は、「Hiveデータ型のサポート」を参照してください。
例8-1 Rを使用したHive表のデータの処理
# Connect to Hive ore.connect(type="HIVE") # Attach the current envt. into search path of R ore.attach() # create a Hive table by pushing the numeric columns of the iris data set IRIS_TABLE <- ore.push(iris[1:4]) # Create bins based on Petal Length IRIS_TABLE$PetalBins = ifelse(IRIS_TABLE$Petal.Length < 2.0, "SMALL PETALS", + ifelse(IRIS_TABLE$Petal.Length < 4.0, "MEDIUM PETALS", + ifelse(IRIS_TABLE$Petal.Length < 6.0, + "MEDIUM LARGE PETALS", "LARGE PETALS"))) #PetalBins is now a derived column of the HIVE object > names(IRIS_TABLE) [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "PetalBins" # Based on the bins, generate summary statistics for each group aggregate(IRIS_TABLE$Petal.Length, by = list(PetalBins = IRIS_TABLE$PetalBins), + FUN = summary) 1 LARGE PETALS 6 6.025000 6.200000 6.354545 6.612500 6.9 0 2 MEDIUM LARGE PETALS 4 4.418750 4.820000 4.888462 5.275000 5.9 0 3 MEDIUM PETALS 3 3.262500 3.550000 3.581818 3.808333 3.9 0 4 SMALL PETALS 1 1.311538 1.407692 1.462000 1.507143 1.9 0 Warning message: ORE object has no unique key - using random order
Oracle R Advanced Analytics for Hadoopは、tinyint、smallint、bigint、int、floatおよびdoubleなどの文字列や数値のデータ型の列を含むHive表にアクセスできます。
次の複雑なデータ型はサポートされません。
array binary map struct timestamp union
サポートされないデータ型を含むHive表にアクセスしようとすると、エラー・メッセージが表示されます。表にアクセスするには、サポートされるデータ型に列を変換する必要があります。
サポートされるデータ型への列の変換するには、次の手順を実行します。
Hiveコマンド・インタフェースを開きます。
$ hive hive>
サポートされないデータ型の列を特定します。
hive> describe table_name;
列のデータを表示します。
hive> select column_name from table_name;
サポートされるデータ型のみを使用して、変換されたデータの表を作成します。
適切な変換ツールを使用して、データを新しい表にコピーします。
例8-2に配列の変換を示します。例8-3と例8-4に、タイムスタンプ・データの変換を示します。
例8-2 文字列の列への配列の変換
R> ore.sync(table="t1")
Warning message:
table t1 contains unsupported data types
.
.
.
hive> describe t1;
OK
col1 int
col2 array<string>
hive> select * from t1;
OK
1 ["a","b","c"]
2 ["d","e","f"]
3 ["g","h","i"]
hive> create table t2 (c1 string, c2 string, c2 string);
hive> insert into table t2 select col2[0], col2[1], col2[2] from t1;
.
.
.
R> ore.sync(table="t2")
R> ore.ls()
[1] "t2"
R> t2$c1
[1] "a" "d" "g"
例8-3では、timestampデータ型の文字列への自動変換が使用されます。データは、tstmpという列があるt5という表に格納されます。
例8-3 タイムスタンプ列の変換
hive> select * from t5; hive> create table t6 (timestmp string); hive> insert into table t6 SELECT tstmp from t5;
例8-4では、Hiveのget_json_object関数を使用して、JSON表からOracle R Advanced Analytics for Hadoopで使用する個別の表に、関連する2つの列を抽出します。
例8-4 JSONファイルのタイムスタンプ列の変換
hive> select * from t3;
OK
{"custId":1305981,"movieId":null,"genreId":null,"time":"2010-12-30:23:59:32","recommended":null,"activity":9}
hive> create table t4 (custid int, time string);
hive> insert into table t4 SELECT cast(get_json_object(c1, '$.custId') as int), cast(get_json_object(c1, '$.time') as string) from t3;
Hiveコマンド言語インタフェース(CLI)は問合せの実行に使用され、Linuxクライアントのサポートを提供します。JDBCやODBCはサポートされません。
ore.create関数は、Hive表をテキスト・ファイルのみで作成します。ただし、Oracle R Advanced Analytics for Hadoopは、テキスト・ファイルまたは順序ファイルのいずれかで格納されるHive表にアクセスできます。
ore.exec関数を使用して、RコンソールからHiveコマンドを実行できます。デモの場合、hive_sequencefileデモを実行します。
Oracle R Advanced Analytics for Hadoopは、デフォルトのHiveデータベースのみの表とビューにアクセスできます。他のデータベースのオブジェクトに対する読取りアクセス権を許可するには、デフォルトのデータベースでそのオブジェクトを公開する必要があります。たとえば、ビューを作成できます。
Oracle R Advanced Analytics for Hadoopには、Hiveでの順序付けの概念がありません。Hiveで存続するRフレームがHiveから抜け出してメモリーに入ると、そのフレームの順序は同じになりません。Oracle R Advanced Analytics for Hadoopは、順序付けが重要ではない大規模なHDFSデータセットのデータのクリーン・アップとフィルタ処理のサポートを主な目的として設計されています。順序付けられていないHiveフレームを操作する場合、次の警告メッセージが表示されます。
Warning messages: 1: ORE object has no unique key - using random order 2: ORE object has no unique key - using random order
これらの警告を抑制するには、次のようにRセッションでore.warn.orderオプションを設定します。
R> options(ore.warn.order = FALSE)
例8-5に、分析目的でRデータ・フレームにHive表をロードする例を示します。次のOracle R Advanced Analytics for Hadoop関数が使用されます。
hdfs.attach ore.attach ore.connect ore.create ore.hiveOptions ore.sync
例8-5 Hive表のロード
# Connect to HIVE metastore and sync the HIVE input table into the R session.
ore.connect(type="HIVE")
ore.sync(table="datatab")
ore.attach()
# The "datatab" object is a Hive table with columns named custid, movieid, activity, and rating.
# Perform filtering to remove missing (NA) values from custid and movieid columns
# Project out three columns: custid, movieid and rating
t1 <- datatab[!is.na(datatab$custid) &
!is.na(datatab$movieid) &
datatab$activity==1, c("custid","movieid", "rating")]
# Set HIVE field delimiters to ','. By default, it is Ctrl+a for text files but
# ORCH 2.0 supports only ',' as a file separator.
ore.hiveOptions(delim=',')
# Create another Hive table called "datatab1" after the transformations above.
ore.create (t1, table="datatab1")
# Use the HDFS directory, where the table data for datatab1 is stored, to attach
# it to ORCH framework. By default, this location is "/user/hive/warehouse"
dfs.id <- hdfs.attach("/user/hive/warehouse/datatab1")
# dfs.id can now be used with all hdfs.*, orch.* and hadoop.* APIs of ORCH for further processing and analytics.
Oracle R Advanced Analytics for Hadoopは、基本レベルのデータベース・アクセスを提供します。データベース表の内容をHDFSに移動したり、HDFS分析の結果をデータベースに戻したりすることができます。
その後、Oracle R Enterpriseという個別の製品を使用して、この小規模データセットに対してさらに分析を実行できます。この製品を使用すると、R言語を使用して、データベースの表、ビューおよびその他のデータ・オブジェクトに統計分析を実行できます。Business Intelligenceおよびインデータベース分析のサポートを含む、データベース・オブジェクトへの透過的なアクセス権があります。
Oracle Databaseに格納されるデータへのアクセスは、常にDBAから付与されるアクセス権に制限されます。
Oracle R Enterpriseは、Oracle Database Enterprise EditionへのOracle Database Advanced Analyticsオプションに含まれています。Oracle Big Data Connectorsには含まれていません。
関連項目:
Oracle R Enterpriseユーザーズ・ガイド
次のシナリオで、Oracle R Advanced Analytics for HadoopとOracle R Enterpriseを使用するケースを確認してください。
Oracle R Advanced Analytics for Hadoopを使用すると、アクセス権を持つファイルをHDFS上で検索して、そのうち1つのファイルのデータに対してR計算を実行できます。また、ローカル・ファイル・システムのテキスト・ファイルに格納されているデータを計算用にHDFSにアップロードし、DBMS_SCHEDULERを使用してRスクリプトをHadoopクラスタで実行するようスケジュールして、結果をローカル・ファイルにダウンロードできます。
Oracle R Enterpriseを使用すると、Rインタフェースを開いてOracle Databaseに接続し、データベースの権限に基づいて使用可能になる表とビューを操作できます。行の除外、導出された列の追加、新しい列の投影および視覚的で統計的な分析を行うことができます。
Oracle R Advanced Analytics for Hadoopを使用すると、Rで記述されたCPU負荷の高い計算の場合、MapReduceジョブをHadoopにデプロイできます。計算には、HDFS (Oracle R Enterpriseを含む)またはOracle Databaseに格納されているデータを使用できます。計算の結果をOracle DatabaseやRコンソールに返し、視覚化したり、追加処理を行うことができます。
Oracle R Advanced Analytics for Hadoop関数の説明は、Rヘルプ・トピックを参照してください。この項では、各関数を機能カテゴリに分類し、簡単に説明します。
表8-1にネイティブ分析関数を示します。
表8-1 統計分析用の関数
| 関数 | 説明 |
|---|---|
|
Pearsonの相関係数の相関行列を生成します。 |
|
共分散行列を生成します。 |
|
|
|
HDFSに格納されているデータに対して、汎用線形モデルを適合させて使用します。 |
|
HDFSにファイルとして格納されているデータ行列に対してK平均法クラスタリングを実行します。 |
|
tall-and-skinny QR (TSQR)因数分解と並列分散を使用して線形モデルを調整します。この関数は、 Oracle R Enterpriseの |
|
jellyfishアルゴリズム、またはMahout alternating least squares with weighted regularization (ALS-WR)アルゴリズムを使用して、低ランクの行列因数分解モデルを調整します。 |
|
入力と出力の間の複雑な非線形の関係をモデル化したり、データのパターンを見つけたりするニューラル・ネットワークを提供します。 |
|
jellyfishアルゴリズムを使用して非負行列因子分解モデルを作成する主なエントリ・ポイントを提供します。この関数は、入力をメモリーに収める必要がないため、Rの |
|
Rの |
|
主コンポーネントのパフォーマンスを分析します。 |
|
入力した |
|
貯蔵サンプリングを提供します。 |
|
スケーリングを実行します。 |
表8-2で、R環境内からHDFSコマンドを実行する関数について説明します。
表8-2 HDFSを使用するための関数
| 関数 | 説明 |
|---|---|
|
デフォルトのHDFSパスを設定します。 |
|
HDFSファイルを別の場所にコピーします。 |
|
HDFS内のファイルに関連付けられたメタデータを返します。 |
|
ファイルがHDFSに存在することを確認します。 |
|
HDFS内のファイルの先頭から、指定した数の行をコピーします。 |
|
HDFSパス名をRの |
|
指定されたパス内のデータを含む全HDFSディレクトリの名前のリスト。 |
|
|
|
HDFSファイルを別の場所に移動します。 |
|
HDFS内のファイルを構成する部分の数を返します。 |
|
HDFS内の現在の作業ディレクトリを識別します。 |
|
HDFSからファイルまたはディレクトリを削除します。 |
|
HDFS内のディレクトリを削除します。 |
|
HDFSのrootディレクトリを返します。 |
|
HDFSのrootディレクトリを設定します。 |
|
HDFS内のファイルのサイズを返します。 |
|
HDFS内のファイルの末尾から、指定された数の行をコピーします。 |
表8-3で、Hiveとともに使用するためにOracle R Advanced Analytics for Hadoopで使用可能な関数について説明します。「HiveのORE関数」を参照してください。
表8-3 Hiveを使用するための関数
| 関数 | 説明 |
|---|---|
|
ORCHでHive表をHDFS識別子に変換します。 |
|
HDFSオブジェクト識別子を |
|
|
|
データベース表またはビューを削除します。 |
|
指定された |
|
Hive表からRオブジェクトにデータをコピーします。 |
|
RオブジェクトからHive表にデータをコピーします。 |
|
|
表8-4で、Hiveとともに使用するためにOracle R Advanced Analytics for HadoopでサポートされるOREstatsパッケージの集計関数について説明します。
表8-4 Oracle R Enterprise集計関数
| 関数 | 説明 |
|---|---|
|
データをサブセットに分割し、サブセットごとに統計サマリーを計算します。 |
|
入力データのTukeyの5数要約(最小値、下側ヒンジ、中央値、上側ヒンジ、最大値)を返します。 |
|
四分位範囲を計算します。 |
|
サンプル中央値を計算します。 |
|
指定された蓋然率に対応するサンプル変位値を生成します。 |
|
標準偏差を計算します。 |
|
差異を計算します。 |
表8-5で、Oracle Databaseへの接続を確立するための関数について説明します。
表8-5 Oracle Databaseを使用するための関数
| 関数 | 説明 |
|---|---|
|
Oracle Databaseへの接続を確立します。 |
|
Oracle R Advanced Analytics for HadoopがOracle Databaseに接続するかどうかを確認します。 |
|
認証資格証明を除く、Oracle Databaseへの現在の接続の接続オブジェクトを返します。 |
|
現在の接続に関する情報を表示します。 |
|
ローカルRセッションをOracle Databaseから切断します。 |
|
|
表8-6で、OracleデータベースのRデータ・フレーム、HDFSファイル、ローカル・ファイルおよび表を含め、プラットフォーム間でデータをコピーするための関数について説明します。
表8-6 データをコピーするための関数
| 関数 | 説明 |
|---|---|
|
HDFSの非構造化データ・ファイルのデータを、Rフレームワークにコピーします。デフォルトでは、HDFSのデータ・ファイルはコネクタで表示されません。ただし、データ・ファイルの名前がわかっている場合、この関数を使用して名前をOracle R Advanced Analytics for Hadoopネームスペースにアタッチします。 |
|
HDFSからローカル・ファイル・システムにファイルをコピーします。 |
|
HDFSからローカルR環境のデータ・フレームにデータをコピーします。R環境でデータが生成されると、すべてのメタデータが抽出され、列名やデータ型などのすべての属性がリストアされます。R環境でデータが生成されない場合、val1やval2などの汎用属性が割り当てられます。 |
|
HDFSからOracle Databaseにデータをコピーします。この操作は、Oracle Databaseによる認証が必要です。 |
|
Oracle DatabaseからHDFSにデータをコピーします。この操作は、Oracle Databaseによる認証が必要です。 |
|
Rのインメモリー・オブジェクト(data.frame)からHDFSにデータをコピーします。列名やデータ型などのすべてのデータ属性が、データとともにメタデータとして格納されます。 |
|
HadoopファイルからRインメモリー・オブジェクトにデータのランダム・サンプルをコピーします。この関数を使用して、最終的にはHadoopクラスタ上のHDFSデータセット全体で実行するR計算の開発用に、元のHDFSデータの小規模なサンプルをコピーします。 |
|
ローカル・ファイル・システムからHDFSにファイルをコピーします。 |
|
Rオブジェクトに有効なHDFSファイル識別子が含まれるかどうかを示します。 |
表8-7で、データ型の変換およびテスト用の関数について説明します。Oracle R EnterpriseのOREbaseパッケージには、次の関数が用意されています。
表8-7 データ型の変換およびテスト用の関数
| 関数 | 説明 |
|---|---|
|
インメモリーRオブジェクトをOREオブジェクトにします。 |
|
インメモリーRオブジェクトをORE文字オブジェクトにします。 |
|
インメモリーRオブジェクトをORE日付オブジェクトにします。 |
|
インメモリーRオブジェクトをORE日時オブジェクトにします。 |
|
インメモリーRオブジェクトをORE時間差オブジェクトにします。 |
|
インメモリーRオブジェクトをORE因数オブジェクトにします。 |
|
インメモリーRオブジェクトをOREフレーム・オブジェクトにします。 |
|
インメモリーRオブジェクトをORE整数オブジェクトにします。 |
|
インメモリーRオブジェクトをOREリスト・オブジェクトにします。 |
|
インメモリーRオブジェクトをORE論理オブジェクトにします。 |
|
インメモリーRオブジェクトをORE行列オブジェクトにします。 |
|
インメモリーRオブジェクトをORE数値オブジェクトにします。 |
|
インメモリーRオブジェクトをOREオブジェクトにします。 |
|
インメモリーRオブジェクトをOREベクトル・オブジェクトにします。 |
|
指定された値が特定のOracle R Enterpriseクラスのオブジェクトかどうかをテストします。 |
|
指定された値が文字かどうかをテストします。 |
|
指定された値が日付かどうかをテストします。 |
|
指定された値が日時型かどうかをテストします。 |
|
指定された値が時間差型かどうかをテストします。 |
|
指定された値が因数かどうかをテストします。 |
|
指定された値がフレームかどうかをテストします。 |
|
指定された値が整数かどうかをテストします。 |
|
指定された値がリストかどうかをテストします。 |
|
指定された値が論理型かどうかをテストします。 |
|
指定された値が行列かどうかをテストします。 |
|
指定された値が数値かどうかをテストします。 |
|
指定された値がオブジェクトかどうかをテストします。 |
|
指定された値がベクトルかどうかをテストします。 |
表8-8で、MapReduceプログラムの作成時や実行時に使用する関数について説明します。
表8-8 MapReduceを使用するための関数
| 関数 | 説明 |
|---|---|
|
Hadoopエンジンを起動し、実行用にマッパー、リデューサおよびコンバイナR関数を送信します。まず、データをHDFSにロードする必要があります。 |
|
実行中のジョブをリストするため、Hadoopクラスタでの現在の負荷を評価できます。 |
|
Hadoopエンジンを起動し、実行用にマッパー、リデューサおよびコンバイナR関数を送信します。データがまだHDFSに格納されていない場合、 |
|
ローカル・ホストとHadoopクラスタ間で実行プラットフォームを切り替えます。ドライ・ランにRコードの変更は必要ありません。 |
|
ユーザーのローカルRセッションのRオブジェクトをHadoop実行環境で利用できるようにするため、これらのオブジェクトをMapReduceジョブで参照できます。 |
|
MapReduceジョブのキーと値のペアを出力します。 |
|
MapReduceジョブのキーと値の一連のペアを出力します。 |
|
マッパーまたはリデューサがキーと値のペアの値として記述する必要がある、1つ以上のインメモリーRオブジェクトを圧縮します。 |
|
一時データが格納されるパスを設定します。 |
|
前述の |
|
パーティション化Hive表を |
表8-9に、Rプログラム・スクリプトのデバッグの支援に使用できる関数を示します。
表8-9 スクリプトのデバッグ用の関数
| 関数 | 説明 |
|---|---|
|
最後のエラー・メッセージを返します。 |
|
デバッグ・モードを無効にします。 |
|
デバッグ・モードを有効にします。これにより、Rコマンドを含むHadoopとOracle R Advanced Analytics for Hadoopとの間のやりとりを出力します。 |
|
デバッガからの出力を管理します。 |
|
|
|
MapReduce RスクリプトのR形式のデバッグを可能にします。 |
Oracle R Advanced Analytics for Hadoopには、様々なデモが用意されており、他のRデモと同じ方法でアクセスできます。
demo関数により、ORCHで使用可能な関数がリストされます。
R> demo(package="ORCH")
Demos in package 'ORCH':
hdfs_cpmv ORCH's copy and move APIs
hdfs_datatrans ORCH's HDFS data transfer APIs
hdfs_dir ORCH's HDFS directory manipulation APIs
hdfs_putget ORCH's get and put API usage
hive_aggregate Aggregation in HIVE
hive_analysis Basic analysis & data processing operations
hive_basic Basic connectivity to HIVE storage
hive_binning Binning logic
hive_columnfns Column function
hive_nulls Handling of NULL in SQL vs. NA in R
.
.
.
このリストからデモを実行するには、次の構文を使用します。
demo("demo_name", package="ORCH")
たとえば、このパッケージは、Hive binningのデモを実行します。
R> demo("hive_binning", package = "ORCH")
demo('hive_binning', package = 'ORCH')
demo(hive_binning)
---- ~~~~~~~~~~~~
> #
> # ORACLE R CONNECTOR FOR HADOOP DEMOS
> #
> # Name: hive_binning.R
> # Description: Demonstrates binning logic in R
> #
> #
.
.
.
エラーが発生した場合は、作業領域イメージを保存せずにRを終了し、新しいセッションを開始してください。また、ローカル・ファイル・システムおよびHDFSファイル・システムに作成された一時ファイルを削除する必要もあります。
# rm -r /tmp/orch* # hdfs dfs -rm -r /tmp/orch*
完了したら、次のようにします。
hadoop.execを実行して、すべての空のpartファイルおよびHadoopログ・ファイルをクリーン・アップまたは削除します。
hadoop.runを実行して、同じ名前でのHDFSオブジェクトの上書きを許可します。
Oracle R Advanced Analytics for Hadoopでは、Sqoopユーティリティを起動してOracle Databaseに接続し、データの抽出または結果の格納を実行します。
Sqoopは、HDFSまたはHiveと構造化データベースとの間でデータのインポートとエクスポートを行うHadoopのコマンドライン・ユーティリティです。Sqoopという名前は、"SQL to Hadoop"に由来します。Oracle R Advanced Analytics for Hadoopでのデータベース・ユーザー・パスワードの格納方法とSqoopへの送信方法について、次に説明します。
Oracle R Advanced Analytics for Hadoopでは、毎回パスワードを再入力する必要のないモードでユーザーがデータベース接続を確立した場合にのみユーザー・パスワードを格納します。パスワードは暗号化されてメモリーに格納されます。orch.connectについては、ヘルプ・トピックを参照してください。
Oracle R Advanced Analytics for Hadoopでは、Sqoop用の構成ファイルを生成し、Sqoopのローカルでの起動に使用します。ファイルには、ユーザーへの要求または暗号化されたインメモリー表現から取得されたユーザーのデータベース・パスワードが含まれます。ファイルは、ローカル・ユーザー・アクセス権限のみ持ちます。ファイルが作成され、権限が明示的に設定された後、ファイルが書込み用に開かれ、データが挿入されます。
Sqoopでは、構成ファイルを使用して特定のデータベース・ジョブ用にカスタムJARファイルを動的に生成し、JARファイルをHadoopクライアント・ソフトウェアに渡します。パスワードは、コンパイルされたJARファイル内に格納されます。プレーン・テキストには格納されません。
JARファイルは、ネットワーク接続を介してHadoopクラスタに転送されます。ネットワーク接続と転送プロトコルは、Hadoopに固有です(ポート5900など)。
構成ファイルは、SqoopでJARファイルのコンパイルが終了し、Hadoopジョブが起動されたら、削除されます。
ベクトルの場合のみ