ヘッダーをスキップ
Oracle® Big Data Connectorsユーザーズ・ガイド
リリース2 (2.5)
E53261-01
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

8 Oracle R Advanced Analytics for Hadoopの使用

この章では、ビッグ・データに対するRのサポートについて説明します。内容は次のとおりです。


注意:

Oracle R Advanced Analytics for Hadoopの旧名称は、Oracle R Connector for Hadoopです。

8.1 Oracle R Advanced Analytics for Hadoopについて

Oracle R Advanced Analytics for Hadoopでは、汎用計算フレームワークを提供します。このフレームワークでは、R言語を使用してカスタム・ロジックをマッパーまたはレデューサとして作成できます。コードは、Hadoopクラスタで使用可能な計算リソースとストレージ・リソースを使用する分散並列方式で実行されます。

Oracle R Advanced Analytics for Hadoopには、Rパッケージのコレクションが組み込まれており、次の機能を提供します。

  • Apache Hive表、Apache Hadoop計算インフラストラクチャ、ローカルR環境およびOracleデータベース表を操作するインタフェース

  • 線形回帰用の予測分析法、汎用線形モデル、ニューラル・ネットワーク、低ランクの行列因数分解を使用した行列補完、非負行列因子分解、k平均法クラスタリング、主成分分析および多変量解析。これらの手法にはRインタフェースがありますが、Oracle R Advanced Analytics for Hadoopでは、このインタフェースをJavaまたはRで分散並列MapReduceジョブとして実装しているため、クラスタのすべてのノードを活用できます。

このパッケージは、他のRパッケージと同様にインストールしてロードします。簡単なR関数を使用して、次のようなタスクを実行できます。

  • Hive対応透過層を使用したHDFSデータへのアクセスとデータの変換

  • マッパーとリデューサを記述するためのR言語の使用

  • Rメモリー、ローカル・ファイル・システム、HDFS、HiveおよびOracle Database間でのデータのコピー

  • Hadoop MapReduceジョブとして実行し、それらの場所に結果を返すRプログラムのスケジュール設定

Oracle R Advanced Analytics for Hadoopを使用するには、MapReduceプログラミング、Rプログラミングおよび統計手法をよく理解しておく必要があります。

Oracle R Advanced Analytics for Hadoop のAPI

Oracle R Advanced Analytics for Hadoopでは、次の接頭辞の関数を使用して、ローカルRクライアントからApache Hadoopへのアクセスを提供します。

  • hadoop: Hadoop MapReduceへのインタフェースを提供する関数を特定します。

  • hdfs: HDFSへのインタフェースを提供する関数を特定します。

  • orch: 様々な関数を特定します。orchORCH関数の一般的な接頭辞です。

  • 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/)

8.2 HDFSファイルへのアクセス

HDFSに格納されるデータにOracle R Advanced Analytics for Hadoopがアクセスするには、入力ファイルが次の要件に従う必要があります。

  • MapReduceジョブの入力ファイルはすべて、1つの論理ファイルの一環として1つのディレクトリに格納される必要があります。有効なHDFSディレクトリ名とファイル名の拡張子が受け入れられます。

  • 該当ディレクトリ内の、アンダースコア(_)で始まる名前のファイルは無視されます。

デリミタはすべてサポートされており、キーと値のデリミタは異なってもかまいません。

また、最適なパフォーマンスを実現するために、RのRdata表現を使用してデリミタ付きファイルをバイナリ形式に変換できます。

8.3 Apache Hiveへのアクセス

Apache Hiveは、HiveQLと呼ばれる問合せ言語(SQLとよく似ている)によって、代替のストレージおよび取得メカニズムをHDFSファイルに提供します。Hiveでは、分散処理にMapReduceが使用されます。ただし、データは構造化され、データ検出をサポートする追加のメタデータがあります。Oracle R Advanced Analytics for HadoopではHiveQLのデータ準備と分析機能が使用されますが、R言語構文も使用できます。


関連項目:

Apache HiveのWebサイト(http://hive.apache.org)

8.3.1 HiveのORCH関数

ORCHでは、次の変換関数を提供しており、HDFSとHive間のデータ移動が簡単にできます。

orch.hdfs2hive
orch.hive2hdfs

8.3.2 HiveのORE関数

接頭辞がoreのR関数(ore.connectなど)を使用して、Hiveへの接続とオブジェクトの管理を行うことができます。Oracle R Enterpriseも使用する場合、これらの関数を認識します。Oracle R Enterpriseのore関数は、Oracle Databaseでオブジェクトを作成して管理し、Oracle R Advanced Analytics for Hadoopのore関数は、Hiveデータベースでオブジェクトを作成して管理します。一度に1つのデータベース(HiveまたはOracle Databaseのいずれか)に接続できますが、同時に両方のデータベースに接続することはできません。

OREのas.ore.*関数とis.ore.*関数のリストは、表8-7を参照してください。

8.3.3 Hiveでサポートされる一般的なR関数

Oracle R Advanced Analytics for Hadoopは、次のメソッドを含む標準汎用R関数もオーバーロードしてHiveオブジェクトを操作します。

文字メソッド

casefoldchartrgsubncharsubstrsubstringtolowertoupper

このリリースでは、greplsubはサポートされません。

フレーム・メソッド
  • attachshow

  • [, $, $<-, [[, [[<-

  • サブセット関数: headtail

  • メタデータ関数: dimlengthNROWnrowNCOLncolnamesnames<-colnamescolnames<-

  • 変換関数: as.data.frameas.envas.list

  • 算術演算子: +-*^%%%/%/

  • CompareLogicxor!

  • テスト関数: is.finiteis.infiniteis.nais.nan

  • 数学的変換: absacosasinatanceilingcosexpexpm1floorloglog10log1plog2logbroundsignsinsqrttantrunc

  • 基礎統計: colMeanscolSumsrowMeansrowSumsSummarysummaryunique

  • bymerge

  • unlistrbindcbinddata.frameeval

このリリースでは、dimnamesinteractionmax.colrow.namesrow.names<-scalesplitsubsettransformwithまたはwithinはサポートされません。

論理メソッド

ifelseLogicxor!

行列メソッド

サポートされません。

数値メソッド
  • 算術演算子: +-*^%%%/%/

  • テスト関数: is.finiteis.infiniteis.nan

  • absacosasinatanceilingcosexpexpm1floorloglog1plog2log10logbmeanroundsignsinsqrtSummarysummarytantrunczapsmall

このリリースでは、atan2besselIbesselKbesselJbesselYdifffactoriallfactorialpmaxpminまたはtabulateはサポートされません。

ベクトル・メソッド
  • showlengthc

  • テスト関数: is.vectoris.nan

  • 変換関数: as.vectoras.characteras.numericas.integeras.logical

  • [, [<-, |

  • byComparehead%in%pastesorttabletailtapplyunique

このリリースでは、interactionlengthbrankまたは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 

8.3.4 Hiveデータ型のサポート

Oracle R Advanced Analytics for Hadoopは、tinyintsmallintbigintintfloatおよびdoubleなどの文字列や数値のデータ型の列を含むHive表にアクセスできます。

次の複雑なデータ型はサポートされません。

array
binary
map
struct
timestamp
union

サポートされないデータ型を含むHive表にアクセスしようとすると、エラー・メッセージが表示されます。表にアクセスするには、サポートされるデータ型に列を変換する必要があります。

サポートされるデータ型への列の変換するには、次の手順を実行します。 

  1. Hiveコマンド・インタフェースを開きます。

    $ hive
    hive>
    
  2. サポートされないデータ型の列を特定します。

    hive> describe table_name;
    
  3. 列のデータを表示します。

    hive> select column_name from table_name;
    
  4. サポートされるデータ型のみを使用して、変換されたデータの表を作成します。

  5. 適切な変換ツールを使用して、データを新しい表にコピーします。

例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;

8.3.5 Hiveアクセスの使用上の注意

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.3.6 例: Oracle R Advanced Analytics for HadoopへのHive表のロード

表8-0に、分析目的で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.

8.4 Oracle Databaseへのアクセス

Oracle R Advanced Analytics for Hadoopは、基本レベルのデータベース・アクセスを提供します。データベース表の内容をHDFSに移動したり、HDFS分析の結果をデータベースに戻したりすることができます。

その後、Oracle R Enterpriseという個別の製品を使用して、この小規模データセットに対してさらに分析を実行できます。この製品を使用すると、R言語を使用して、データベースの表、ビューおよびその他のデータ・オブジェクトに統計分析を実行できます。Business IntelligenceおよびIn-Database分析のサポートを含む、データベース・オブジェクトへの透過的なアクセス権があります。

Oracle Databaseに格納されるデータへのアクセスは、常にDBAから付与されるアクセス権に制限されます。

Oracle R Enterpriseは、Oracle Database Enterprise EditionへのOracle Database Advanced Analyticsオプションに含まれています。Oracle Big Data Connectorのいずれかではありません。


関連項目:

Oracle R Enterpriseユーザーズ・ガイド

8.4.1 Oracle Databaseアクセスの使用上の注意

Oracle R Advanced Analytics for Hadoopは、Sqoopを使用して、HDFSとOracle Database間でデータを移動します。Sqoopは、Oracle R Advanced Analytics for Hadoopに対して次のような複数の制限を設けます。

  • BINARY_FLOAT列またはBINARY_DOUBLE列を含むOracle表はインポートできません。回避策として、これらの列の型をNUMBERに変換するビューを作成できます。

  • 列名はすべて大文字にする必要があります。

8.4.2 Oracle R EnterpriseでOracle R Advanced Analytics for Hadoopを使用する場合のシナリオ

次のシナリオで、Oracle R Advanced Analytics for HadoopとOracle R Enterpriseを使用するケースを確認してください。

Oracle R Advanced Analytics for Hadoopを使用すると、アクセス権を持つファイルをHDFS上で検索して、そのうち1つのファイルのデータに対してR計算を実行できます。また、ローカル・ファイル・システムのテキスト・ファイルに格納されているデータを計算用にHDFSにアップロードし、DBMS_SCHEDULERを使用してRスクリプトをHadoopクラスタで実行するようスケジュールして、結果をPC上のローカル・ファイルにダウンロードできます。

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コンソールに返し、視覚化したり、追加処理を行うことができます。

8.5 Oracle R Advanced Analytics for Hadoop関数

Oracle R Advanced Analytics for Hadoop関数の説明は、Rヘルプ・トピックを参照してください。この項では、各関数を機能カテゴリに分類し、簡単に説明します。

8.5.1 分析関数の記述

表8-1に分析関数を示します。

表8-1 統計分析用の関数

関数 説明

orch.evaluate

orch.lmfで生成される適合度を評価します。この情報は、モデル・パラメータのチューニングで役立ちます。

orch.export.fit

orch.lmf.jellyfishまたはorch.nmfに指定された宛先にモデル(WおよびH因子行列)をエクスポートします。orch.mahout.lmf.alsには使用されません。

orch.getXlevels

model.matrix呼出しのxlev引数で使用できる因数レベルのリストを作成します。統計パッケージの.getXlevels関数と同等です。

orch.glm

HDFSに格納されているデータに対して、汎用線形モデルを適合させて使用します。

orch.kmeans

HDFSにファイルとして格納されているデータ行列に対してK平均法クラスタリングを実行します。

orch.lm

tall-and-skinny QR (TSQR)因数分解と並列分散を使用して線形モデルを調整します。この関数は、 Oracle R Enterpriseのore.lm関数と同じ統計パラメータを計算します。

orch.lmf

jellyfishアルゴリズム、またはMahout alternating least squares with weighted regularization (ALS-WR)アルゴリズムを使用して、低ランクの行列因数分解モデルを調整します。

orch.neural

入力と出力の間の複雑な非線形の関係をモデル化したり、データのパターンを見つけたりするニューラル・ネットワークを提供します。

orch.nmf

jellyfishアルゴリズムを使用して非負行列因子分解モデルを作成する主なエントリ・ポイントを提供します。この関数は、入力をメモリーに収める必要がないため、RのNMFパッケージよりもかなり大規模なデータセットを操作できます。

orch.nmf.NMFalgo

RのNMFパッケージ・フレームワークをカスタム・アルゴリズムとして挿入します。この関数は、ベンチマーク・テストに使用されます。

orch.recommend

入力したorch.mahout.lmf.aslモデルに基づき、格付けが予想される各ユーザーに推奨される上位n個の項目を計算します。


8.5.2 Hadoop Distributed File System (HDFS)の使用

表8-2で、R環境内からHDFSコマンドを実行する関数について説明します。

表8-2 HDFSを使用するための関数

関数 説明

hdfs.cd

デフォルトのHDFSパスを設定します。

hdfs.cp

HDFSファイルを別の場所にコピーします。

hdfs.describe

HDFS内のファイルに関連付けられたメタデータを返します。

hdfs.exists

ファイルがHDFSに存在することを確認します。

hdfs.head

HDFS内のファイルの先頭から、指定した数の行をコピーします。

hdfs.id

HDFSパス名をRのdfs.idオブジェクトに変換します。

hdfs.ls

指定されたパス内のデータを含む全HDFSディレクトリの名前のリスト。

hdfs.mkdir

現在の作業ディレクトリに相対的なサブディレクトリをHDFS内に作成します。

hdfs.mv

HDFSファイルを別の場所に移動します。

hdfs.parts

HDFS内のファイルを構成する部分の数を返します。

hdfs.pwd

HDFS内の現在の作業ディレクトリを識別します。

hdfs.rm

HDFSからファイルまたはディレクトリを削除します。

hdfs.rmdir

HDFS内のディレクトリを削除します。

hdfs.root

HDFSのrootディレクトリを返します。

hdfs.setroot

HDFSのrootディレクトリを設定します。

hdfs.size

HDFS内のファイルのサイズを返します。

hdfs.tail

HDFS内のファイルの末尾から、指定された数の行をコピーします。


8.5.3 Apache Hiveの使用

表8-3で、Hiveとともに使用するためにOracle R Advanced Analytics for Hadoopで使用可能な関数について説明します。「HiveのORE関数」を参照してください。

表8-3 Hiveを使用するための関数

関数 説明

hdfs.fromHive

ORCHでHive表をDFS識別子に変換します。

hdfs.toHive

HDFSオブジェクト識別子をore.frameオブジェクトで表されるHive表に変換します。

ore.create

data.frameオブジェクトまたはore.frameオブジェクトからデータベース表を作成します。

ore.drop

データベース表またはビューを削除します。

ore.get

指定されたore.frameオブジェクトを取得します。

ore.pull

Hive表からRオブジェクトにデータをコピーします。

ore.push

RオブジェクトからHive表にデータをコピーします。

ore.recode

ore.vectorオブジェクトの値を置換します。


8.5.4 Hiveでの集計関数の使用

表8-4で、Hiveとともに使用するためにOracle R Advanced Analytics for HadoopでサポートされるOREstatsパッケージの集計関数について説明します。

表8-4 Oracle R Enterprise集計関数

関数 説明

aggregate

データをサブセットに分割し、サブセットごとに統計サマリを計算します。

fivenum

入力データのTukeyの5数要約(最小値、下側ヒンジ、中央値、上側ヒンジ、最大値)を返します。

IQR

四分位範囲を計算します。

median

サンプル中央値を計算します。

quantile

指定された蓋然率に対応するサンプル変位値を生成します。

sd

標準偏差を計算します。

var脚注1

差異を計算します。


脚注1 ベクトル専用

8.5.5 データベース接続の確立

表8-5で、Oracle Databaseへの接続を確立するための関数について説明します。

表8-5 Oracle Databaseを使用するための関数

関数 説明

orch.connect

Oracle Databaseへの接続を確立します。

orch.connected

Oracle R Advanced Analytics for HadoopがOracle Databaseに接続するかどうかを確認します。

orch.dbcon

認証資格証明を除く、Oracle Databaseへの現在の接続の接続オブジェクトを返します。

orch.dbinfo

現在の接続に関する情報を表示します。

orch.disconnect

ローカルRセッションをOracle Databaseから切断します。

orch.reconnect

orch.disconnectで以前に返された資格証明を使用してOracle Databaseに再接続します。


8.5.6 データのコピー

表8-6で、OracleデータベースのRデータ・フレーム、HDFSファイル、ローカル・ファイルおよび表を含め、プラットフォーム間でデータをコピーするための関数について説明します。

表8-6 データをコピーするための関数

関数 説明

hdfs.attach

HDFSの非構造化データ・ファイルのデータを、Rフレームワークにコピーします。デフォルトでは、HDFSのデータ・ファイルはコネクタで表示されません。ただし、データ・ファイルの名前がわかっている場合、この関数を使用して名前をOracle R Advanced Analytics for Hadoopネームスペースにアタッチします。

hdfs.download

HDFSからローカル・ファイル・システムにファイルをコピーします。

hdfs.get

HDFSからローカルR環境のデータ・フレームにデータをコピーします。R環境でデータが生成されると、すべてのメタデータが抽出され、列名やデータ型などのすべての属性がリストアされます。R環境でデータが生成されない場合、val1やval2などの汎用属性が割り当てられます。

hdfs.pull

HDFSからOracle Databaseにデータをコピーします。この操作は、Oracle Databaseによる認証が必要です。orch.connectを参照してください。

hdfs.push

Oracle DatabaseからHDFSにデータをコピーします。この操作は、Oracle Databaseによる認証が必要です。orch.connectを参照してください。

hdfs.put

Rのメモリー内オブジェクト(data.frame)からHDFSにデータをコピーします。列名やデータ型などのすべてのデータ属性が、データとともにメタデータとして格納されます。

hdfs.sample

HadoopファイルからRメモリー内オブジェクトにデータのランダム・サンプルをコピーします。この関数を使用して、最終的にはHadoopクラスタ上のHDFSデータセット全体で実行するR計算の開発用に、元のHDFSデータの小規模なサンプルをコピーします。

hdfs.upload

ローカル・ファイル・システムからHDFSにファイルをコピーします。

is.hdfs.id

Rオブジェクトに有効なHDFSファイル識別子が含まれるかどうかを示します。


8.5.7 Rデータ型への変換

表8-7で、データ型の変換およびテスト用の関数について説明します。Oracle R EnterpriseのOREbaseパッケージには、次の関数が用意されています。

表8-7 データ型の変換およびテスト用の関数

関数 説明

as.ore

メモリー内RオブジェクトをOREオブジェクトにします。

as.ore.character

メモリー内RオブジェクトをORE文字オブジェクトにします。

as.ore.date

メモリー内RオブジェクトをORE日付オブジェクトにします。

as.ore.datetime

メモリー内RオブジェクトをORE日時オブジェクトにします。

as.ore.difftime

メモリー内RオブジェクトをORE時間差オブジェクトにします。

as.ore.factor

メモリー内RオブジェクトをORE因数オブジェクトにします。

as.ore.frame

メモリー内RオブジェクトをOREフレーム・オブジェクトにします。

as.ore.integer

メモリー内RオブジェクトをORE整数オブジェクトにします。

as.ore.list

メモリー内RオブジェクトをOREリスト・オブジェクトにします。

as.ore.logical

メモリー内RオブジェクトをORE論理オブジェクトにします。

as.ore.matrix

メモリー内RオブジェクトをORE行列オブジェクトにします。

as.ore.numeric

メモリー内RオブジェクトをORE数値オブジェクトにします。

as.ore.object

メモリー内RオブジェクトをOREオブジェクトにします。

as.ore.vector

メモリー内RオブジェクトをOREベクトル・オブジェクトにします。

is.ore

指定された値が特定のOracle R Enterpriseクラスのオブジェクトかどうかをテストします。

is.ore.character

指定された値が文字かどうかをテストします。

is.ore.date

指定された値が日付かどうかをテストします。

is.ore.datetime

指定された値が日時型かどうかをテストします。

is.ore.difftime

指定された値が時間差型かどうかをテストします。

is.ore.factor

指定された値が因数かどうかをテストします。

is.ore.frame

指定された値がフレームかどうかをテストします。

is.ore.integer

指定された値が整数かどうかをテストします。

is.ore.list

指定された値がリストかどうかをテストします。

is.ore.logical

指定された値が論理型かどうかをテストします。

is.ore.matrix

指定された値が行列かどうかをテストします。

is.ore.numeric

指定された値が数値かどうかをテストします。

is.ore.object

指定された値がオブジェクトかどうかをテストします。

is.ore.vector

指定された値がベクトルかどうかをテストします。


8.5.8 MapReduceの使用

表8-8で、MapReduceプログラムの作成時や実行時に使用する関数について説明します。

表8-8 MapReduceを使用するための関数

関数 説明

hadoop.exec

Hadoopエンジンを起動し、実行用にマッパー、リデューサおよびコンバイナR関数を送信します。まず、データをHDFSにロードする必要があります。

hadoop.jobs

実行中のジョブをリストするため、Hadoopクラスタでの現在の負荷を評価できます。

hadoop.run

Hadoopエンジンを起動し、実行用にマッパー、リデューサおよびコンバイナR関数を送信します。データがまだHDFSに格納されていない場合、hadoop.runは、まずデータをHDFSにコピーします。

orch.dryrun

ローカル・ホストとHadoopクラスタ間で実行プラットフォームを切り替えます。ドライ・ランにRコードの変更は必要ありません。

orch.export

ユーザーのローカルRセッションのRオブジェクトをHadoop実行環境で利用できるようにするため、これらのオブジェクトをMapReduceジョブで参照できます。

orch.keyval

MapReduceジョブのキーと値のペアを出力します。

orch.keyvals

MapReduceジョブのキーと値の一連のペアを出力します。

orch.pack

マッパーまたはリデューサがキーと値のペアの値として記述する必要がある、1つ以上のメモリー内Rオブジェクトを圧縮します。

orch.temp.path

一時データが格納されるパスを設定します。

orch.unpack

前述のorch.packの呼出しで圧縮されたRオブジェクトをリストアします。


8.5.9 スクリプトのデバッグ

表8-9に、Rプログラム・スクリプトのデバッグの支援に使用できる関数を示します。

表8-9 スクリプトのデバッグ用の関数

関数 説明

orch.dbg.lasterr

最後のエラー・メッセージを返します。

orch.dbg.off

デバッグ・モードを無効にします。

orch.dbg.on

デバッグ・モードを有効にします。

orch.dbg.output

デバッガからの出力を管理します。

orch.version

ORCHパッケージのバージョンを識別します。


8.6 Oracle R Advanced Analytics for Hadoop関数のデモ

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*

8.7 Oracle R Advanced Analytics for Hadoopのセキュリティ上の注意

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ジョブが起動されたら、削除されます。