azure data lake gen2 でファイル操作をする
azure data lake gen2 ってなに?
awsでいうところのS3。azureにはもともとblob storageというのがあったがblobの進化版らしい。
参考
https://docs.microsoft.com/ja-jp/azure/storage/blobs/data-lake-storage-introduction
何が良くなったのかよくわからんが、ファイルのリネームとかが簡単になったらしい。
blobではファイル名とデータがkey value storeのように結びついている。要はディレクトリという概念がなく、blobのファイルアドレスとデータが1対1に紐付いている。 azure portalからblobストレージを見るとディレクトリがあるように見えるが、ファイルアドレスの中を/
で区切ることでディレクトリのように見せかけているだけ。
そのため、blobでファイル名やディレクトリのリネームをしようとすると、
1. 新しいファイル名でblobをコピーする
2. もともとのファイルを 削除する
という手順をが実行される。linuxのmv
コマンド感覚でうっかりディレクトリのリネームを実行すると、膨大なファイルのコピー&デリートが発生して結構時間がかかったりする。
blobとは違いdata lake gen2ではファイルとディレクトリの概念があるので、linuxのmv
コマンドのようにリネームを実行してもファイル名が変わるだけで膨大なコピペは発生しませんよ。というのが売りらしい。
blobと同様にdata lake gen2はhdfsのように振る舞う事ができるので、sparkやhadoopで読み書きができる。
blobと互換性をもたせる予定らしく(今は互換性ない)、blob用に書いたいろいろなツールも将来的には簡単にdatalakegen2に移植できるらしい。
クライアントツールがない
GAアナウンス
https://azure.microsoft.com/ja-jp/updates/azure-data-lake-storage-gen2-is-now-generally-available/
今年の2月にGAしたばかりなので、いろいろとツールが揃っていない。blobの場合はpythonのBlockBlobStorageモジュールを使えばアクセスできたが、今はまだdata lake gen2 に使えない。
対応してるツール一覧
https://docs.microsoft.com/ja-jp/azure/storage/blobs/data-lake-storage-known-issues
hdfsコマンドには対応しているようなので、hdfsコマンドからファイルの操作をする方法をメモする。
環境
OS
Ubuntu 16.04.6 LTS
java インストール
Javaのインストール
$ sudo apt install openjdk-8-jre-headless
$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.16.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)
JAVA_HOME
の設定
$ which java
/usr/bin/java
$ export JAVA_HOME=/usr
HDFSコマンドの用意
HADOOPコマンドのダウンロード
https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz
ダウンロード、解凍したらとりあえずhadoop-3.2.0に移動
よくわからんおまじない
export HADOOP_OPTIONAL_TOOLS=hadoop-azure
やっとファイル操作してみる
bin/hdfs dfs -Dfs.azure.account.key.ACCOUNTNAME.dfs.core.windows.net=ACCOUNTKEY \
-ls abfss://[email protected]/
これでhdfsコマンド一式を使ってファイル操作ができるようになった。
参考文献
hdfs オプションいちらん
Author And Source
この問題について(azure data lake gen2 でファイル操作をする), 我々は、より多くの情報をここで見つけました https://qiita.com/neppysan/items/efbc5077cf14574527bc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .