前のページ|次のページ

FILENAMEステートメント、Hadoopアクセス方式

Hadoop分散ファイルシステム(HDFS)にアクセスできるようにします。HDFSのロケーションは構成ファイルで指定します。

該当要素: 任意の場所
カテゴリ: データアクセス
制限事項: UNIXベースのシステムでHadoop構成ファイルへのアクセスを制限する
SASがロックダウン状態にある場合、FILENAMEステートメントのHadoopアクセス方式は使用できません。サーバー管理者は、このアクセス方式がロックダウン状態でも使用できるように、同方式を再有効化できます。LOCKDOWN ENABLE_AMS=ステートメントを使用して、FILENAMEステートメントのHadoopアクセス方式が再有効化されると、HADOOPプロシジャが自動的に再有効化されます。詳細については、XisError: No pubcode in link data found for lrconを参照してください。
要件: Base SAS 9.4のメンテナンスリリース3でサポートされているHadoopディストリビューションは次のとおりです。CDH 5.0、CDH 4.5、HDP 2.0、HDP 1.3、IBM BigInsights 2.1、MapR 3.0、Pivotal HD 1.1.1以降。
Base SAS 9.4のメンテナンスリリース3では、Hadoopクラスタに接続するには、特定のHadoopクラスタから、SASクライアントマシンがアクセス可能な物理的な場所に、Hadoop構成ファイルをコピーする必要があります。SAS環境変数SAS_HADOOP_CONFIG_PATHは、Hadoop構成ファイルの場所に設定する必要があります。詳細については、SAS Hadoop Configuration Guide for Base SAS and SAS/ACCESSを参照してください。
JavaのネイティブAPIを使用してFILENAMEステートメントのHadoopアクセス方式を使用するには、HadoopディストリビューションJARファイルを、SASクライアントマシンがアクセス可能な物理的な場所にコピーする必要があります。SAS環境変数SAS_HADOOP_JAR_PATHには、このようなHadoop JARファイルの格納場所を指定する必要があります。詳細については、SAS Hadoop Configuration Guide for Base SAS and SAS/ACCESSを参照してください。
REST APIを使用して、WebHDFSによってFILENAMEステートメントのHadoopアクセス方式を使用するには、SAS環境変数SAS_HADOOP_RESTFUL 1を定義する必要があります。さらに、Hadoop構成ファイルhdfs-site.xmlには、WebHDFSロケーションのプロパティを記述する必要があります。詳細については、SAS 9.4 Hadoop Configuration Guide for Base SAS and SAS/ACCESSを参照してください。

構文

必須引数

fileref

有効なファイル参照名を指定します。

ヒント ファイル参照名と外部ファイルの関連付けは、SASセッション終了まで維持されるか、または他のFILENAMEステートメントで関連付けの変更や関連付けの取り消しを実行するまで維持されます。

HADOOP

このアクセス方式を指定すると、Hadoop構成で接続できるホストマシンであれば、Hadoopを使ってファイルの読み込みや書き込みを実行できるようになります。

'external-file'

HDFSシステムで、読み込みまたは書き込みの対象となるファイルの物理名を指定します。物理名には動作環境で判別できる名前を指定します。

動作環境 外部ファイルの物理名を指定する方法の詳細については、各動作環境向けのSASドキュメントを参照してください。
ヒント 外部ファイルにファイル参照名を割り当てる場合は、external-fileを指定します。ファイル参照名には、1つのファイルまたは集約記憶域を関連付けることができます。

Hadoopオプション

hadoop-optionsには、次のいずれかの値を指定できます。

BUFFERLEN=bufferlen

I/O操作でHadoopで受け渡しできるデータの最大バッファ長を指定します。

デフォルト 503808
制限事項 最大バッファ長は1000000です。
ヒント デフォルト以上の値をバッファ長に指定すると、パフォーマンスの改善が見込まれる場合もあります。

CFG="physical-pathname-of-hadoop-configuration-file" | fileref-that-references-a-hadoop-configuration-file

特定のHadoopクラスタの接続設定を含む構成ファイルを指定します。

CONCAT

FILENAME HADOOPステートメントで指定されたHDFSディレクトリ名ワイルドカード指定であると指定します。ディレクトリ内のすべてのファイルが連結されると、1つの論理ファイルとして扱われ、1ファイルとして読み込まれます。

制限事項 これは入力でのみ有効です。
操作 CONCATオプションとDIRオプションは相互に排他的です。両方のオプションを指定すると、HadoopではDIRオプションが無視されます。また、情報メッセージがログに書き込まれます。
ヒント テキストやバイナリファイルは連結しないでください。

DEBUG

追加的なメッセージがSASログに表示されるようにします。

DEBUGは、エラー診断ツールとして役立ちます。SASの起動時にエラーメッセージを受け取った場合、このオプションを使用することで、システムオプション指定にエラーが含まれているかどうかを確認できます。

DIR

HDFSディレクトリのファイルにアクセスできるようにします。

要件 指定したホストに対して有効なディレクトリ構文を使用する必要があります。
操作 CONCATオプションとDIRオプションは相互に排他的です。両方のオプションを指定すると、HadoopではDIRオプションが無視されます。また、情報メッセージがログに書き込まれます。
external-file引数にHDFSディレクトリ名を指定してください。
ディレクトリを作成する場合、DIRオプションとNEWオプションを組み合わせて使用します。ディレクトリがすでに存在する場合、NEWオプションは無視されます。NEWオプションを使用せずに無効なディレクトリを指定すると、新しいディレクトリは作成されず、エラーメッセージが表示されます。
参照項目 FILEEXT
NEW

ENCODING='encoding-value'

外部ファイルからの読み込みや外部ファイルへの書き込みに使用するエンコーディングを指定します。ENCODING=の値は、外部ファイルのエンコーディングが現在のセッションエンコーディングとは異なることを示しています。

デフォルト SASでは、外部ファイルのエンコーディングがセッションエンコーディングと同じであるとみなします。
外部ファイルからデータを読み込む場合は、指定したエンコーディングからセッションエンコーディングにデータがトランスコードされます。外部ファイルにデータを書き込む場合は、セッションエンコーディングから指定したエンコーディングにデータがトランスコードされます。
参照項目 SAS National Language Support (NLS): Reference Guideの“Encoding Values in SAS Language Elements”

FILEEXT

DIRオプションを使用するときは、ファイル拡張子をファイル名に自動的に追加するように指定します。

操作 自動呼び出しマクロ機能では、拡張子.SASが常にファイルアクセス方式に渡されます。この拡張子は自動呼び出しマクロライブラリ内のファイルを開くときに使用されます。DATAステップでは、拡張子.DATAが常に渡されます。自動呼び出しマクロライブラリに対してファイル参照名を定義し、そのライブラリにあるファイルの拡張子が.SASの場合、FILEEXTオプションを使用します。ライブラリに拡張子を持つファイルが存在しない場合は、FILEEXTオプションを使用しないでください。たとえば、DATAステップで入力ファイルにファイル参照名を定義し、そのファイルXの拡張子が.DATAの場合、ファイルX.DATAを読み込むためにFILEEXTオプションを使用します。INFILEまたはFILEステートメントを使用する場合は、大文字と小文字を維持するためにメンバ名と拡張子を引用符で囲みます。
ヒント INFILEまたはFILEステートメントでファイルの拡張子を指定すると、FILEEXTオプションは無視されます。
参照項目 LOWCASE_MEMNAME

LOWCASE_MEMNAME

自動呼び出しマクロを使用して、HFDSシステムから小文字のディレクトリ名やメンバ名を取得できるようにします。

制限事項 SAS自動呼び出しマクロを使用して名前を取得するときは、常に大文字のディレクトリメンバ名を探します。大文字と小文字が混在するディレクトリ名やメンバ名はサポートされていません。
参照項目 FILEEXT

LRECL=logical-record-length

データの論理レコード長を指定します。

デフォルト 65536

MOD

ファイルを更新モードに設定し、ファイルの最後に更新内容を追加します。

MAXWAIT=wait-interval

WebHDFSを使用する場合のHTTPステータス応答時間を指定します。

デフォルト 40000ミリ秒
要件 環境変数SAS_HADOOP_RESTFULに値1を設定する必要があります。
ヒント タイムアウトメッセージがログに出力される場合、MAXWAITオプションを使用して待機時間を長く設定します。

NEW

DIRオプションの使用時に、ディレクトリを作成するように指定します。

操作 ディレクトリを作成する場合、DIRオプションとNEWオプションを組み合わせて使用します。ディレクトリがすでに存在する場合、NEWオプションは無視されます。NEWオプションを使用せずに無効なディレクトリを指定すると、新しいディレクトリは作成されず、エラーメッセージが表示されます。
参照項目 DIR

PASS='password'

このpasswordには、USER=オプションで指定したユーザー名とともに使用するパスワードを指定します。

要件 パスワードでは大文字と小文字が区別されます。また、一重引用符か二重引用符で囲んで指定する必要があります。
ヒント 暗号化されたパスワードを使用する場合、テキスト文字列を隠すためにPWENCODEプロシジャを使用します。次に、暗号化されたパスワードをPASS=オプションに入力します。詳細については、Base SAS Procedures GuideのPWENCODEプロシジャを参照してください。

PROMPT

必要に応じて、ユーザーのログイン、パスワード、または両方の入力を求めるプロンプトを表示するように指定します。

操作 USER=、PASS=、PROMPTの3つのオプションをすべて指定すると、USER=オプションとPASS=オプションはPROMPTオプションより優先されます。PROMPTオプションを指定してUSER=またはPASS=オプションを指定しない場合、ユーザーIDとパスワードの入力を求めるプロンプトが表示されます。

RECFM=record-format

このrecord-formatには、次の3つのレコード形式のいずれかを指定します。

S

ストリームレコード形式です。データはバイナリモードで読み込まれます。

ヒント 読み込むデータ量は、現在のLRECLの値またはINFILEステートメントに指定したNBYTE=変数の値で制御されます。NBYTE=オプションには、読み込まれるデータ量に等しくなる変数を指定します。このデータ量は、LRECLに指定した値に等しいか、それ以下の値にする必要があります。PDFやGIFなどのサイズの大きいバイナリファイルの読み込み時に問題が発生しないようにするには、NBYTE=1に設定して1度に1バイトずつ読み込みするようにします。
参照項目 SAS Statements: ReferenceのINFILEステートメントのNBYTE=オプション

F

固定長レコード形式です。この形式ではレコードの長さは固定です。また、レコードはバイナリモードで読み込まれます。

V

可変長レコード形式(デフォルト設定)です。この形式では、レコードの長さが異なります。また、レコードはテキスト(ストリーム)モードで読み込まれます。

ヒント LRECLの値よりも大きいレコードは切り捨てられます。
デフォルト V
操作 SAS 9.4では、グローバルLRECLシステムオプションのデフォルト値は32767です。固定長レコード(RECFM=F)を使用する場合、LRECLのデフォルト値は256になります。

USER='username'

このusernameはHadoopシステムにログオンするために使用されます。

要件 USER=オプションを指定せずにHadoopに接続する場合は、次のオプションを指定してSASを開始する必要があります。
-jreoptions "(-Djavax.security.auth.useSubjectCredsOnly=false)"
ユーザー名では大文字と小文字が区別されます。また、一重引用符か二重引用符で囲んで指定する必要があります。

詳細

HDFSシステムではディレクトリレベルとファイルレベルの両方で権限のレベルを定義します。Hadoopアクセス方式では、これらの権限が適用されます。たとえば、ファイルが読み取り専用で使用できる場合、ユーザーはそのファイルを変更することはできません。
動作環境の情報: FILENAMEステートメントを使用する場合は、動作環境固有の情報が必要になります。Hadoopアクセス方式は、ここで詳しく説明されています。ファイル名を指定する方法の詳細については、各動作環境向けのSASドキュメントを参照してください。

例1: 新ディレクトリメンバへの書き込み

この例では、ファイルshoesをディレクトリtestingに書き込みます。
filename out hadoop '/user/testing/' cfg=”/path/cfg.xml” user='xxxx'
  pass='xxxx' recfm=v  lrecl=32167 dir ;
  
data _null_;
   file out(shoes) ;
   put 'write data to shoes file';
run;

例2: 構成ファイルの作成および使用

この例では、サイトxxx.unx.sas.comにあるファイルacctdata.datにアクセスします。この構成ファイルは、“cfg”ファイル参照名の割り当てからアクセスされます。
filename cfg  'U:/test.cfg';

data _null_;
   file cfg;
   input;
   put _infile_;
   datalines4;
<configuration>
<property>
   <name>fs.default.name</name>
   <value>hdfs://xxx.unx.sas.com:8020</value>
</property>
<property>
   <name>mapred.job.tracker</name>
   <value>xxx.unx.sas.com:8021</value>
</property>
</configuration>
 
;;;;

filename foo hadoop '/user/xxxx/acctdata.dat' cfg=cfg user='xxxx'
    pass='xxxx' debug recfm=s lrecl=65536 bufferlen=65536;
  
data _null_;
   infile foo truncover;
   input a $1024.;
   put a;
run;

例3: ファイルの読み込み中の1MBのデータのバッファリング

この例ではBUFFERLENオプションを使用して、ファイルの読み込み中に一度に1MBのデータをバッファリングします。長さ1024のレコードはバッファから読み込まれます。
filename foo hadoop 'file1.dat' cfg='U:/hadoopcfg.xml'
   user='user' pass='apass' recfm=s
   lrecl=1024 bufferlen=1000000;

data _null_;
   infile foo truncover;
input a $1024.;
put a;
run;

例4: CONCATオプションの使用

この例ではCONCATオプションを使用して、DIRECTORY1のすべてのメンバを一つのファイルのように読み込みます。
filename foo hadoop '/directory1/' cfg='U:/hadoopcfg.xml'
   user='user' pass='apass' recfm=s lrecl=1024 concat;

data _null_;
   infile foo truncover;
input a $1024.;
put a;
run;

関連項目:

前のページ|次のページ|ページの先頭へ