Apache-presto-quick-guide
Apache Presto-概要
データ分析とは、生データを分析して関連情報を収集し、意思決定を改善するプロセスです。 主に多くの組織でビジネス上の意思決定を行うために使用されます。 ビッグデータ分析には大量のデータが含まれ、このプロセスは非常に複雑であるため、企業はさまざまな戦略を使用します。
たとえば、Facebookはデータ主導型で世界最大のデータウェアハウス企業の1つです。 Facebookウェアハウスデータは、大規模な計算のためにHadoopに保存されます。 その後、ウェアハウスのデータがペタバイトに増加したとき、彼らは低遅延で新しいシステムを開発することに決めました。 2012年に、Facebookチームのメンバーは、ペタバイトのデータでも迅速に動作するインタラクティブなクエリ分析のために*「Presto」*を設計しました。
Apache Prestoとは何ですか?
Apache Prestoは、低レイテンシおよびインタラクティブなクエリ分析向けに最適化された分散型の並列クエリ実行エンジンです。 Prestoはクエリを簡単に実行し、ギガバイトからペタバイトにさえダウンタイムなしでスケーリングします。
1つのPrestoクエリで、HDFS、MySQL、Cassandra、Hiveなどの複数のソースからのデータを処理できます。 PrestoはJavaで構築されており、他のデータインフラストラクチャコンポーネントと簡単に統合できます。 Prestoは強力で、Airbnb、DropBox、Groupon、Netflixなどの大手企業が採用しています。
プレスト-機能
プレストには、次の機能が含まれています-
- シンプルで拡張可能なアーキテクチャ。
- プラグ可能なコネクタ-Prestoは、クエリ用のメタデータとデータを提供するプラグ可能なコネクタをサポートしています。
- パイプライン化された実行-不要なI/Oレイテンシのオーバーヘッドを回避します。
- ユーザー定義関数-アナリストはカスタムユーザー定義関数を作成して、簡単に移行できます。
- ベクトル化された列処理。
プレスト-利点
Apache Prestoが提供する利点のリストは次のとおりです-
- 特殊なSQL操作
- インストールとデバッグが簡単
- シンプルなストレージ抽象化
- 低レイテンシでペタバイトのデータを迅速にスケーリング
Presto-アプリケーション
Prestoは、今日の最高の産業用アプリケーションのほとんどをサポートしています。 注目すべきアプリケーションをいくつか見てみましょう。
- Facebook -Facebookはデータ分析のニーズに応えてPrestoを構築しました。 Prestoは、大量のデータを簡単にスケーリングします。
- Teradata -Teradataは、ビッグデータ分析およびデータウェアハウジングでエンドツーエンドのソリューションを提供します。 PrestoへのTeradataの貢献により、より多くの企業がすべての分析ニーズを簡単に実現できます。
- Airbnb -Prestoは、Airbnbデータインフラストラクチャの不可欠な部分です。 さて、何百人もの従業員が毎日このテクノロジーを使用してクエリを実行しています。
なぜプレストなのか?
Prestoは標準のANSI SQLをサポートしているため、データアナリストや開発者にとって非常に簡単です。 Javaで構築されていますが、メモリの割り当てとガベージコレクションに関連するJavaコードの典型的な問題を回避します。 Prestoには、Hadoopに優しいコネクタアーキテクチャがあります。 ファイルシステムを簡単にプラグインできます。
Prestoは複数のHadoopディストリビューションで実行されます。 さらに、Prestoは、Hadoopプラットフォームから、Cassandra、リレーショナルデータベース、またはその他のデータストアにクエリを実行できます。 このクロスプラットフォーム分析機能により、Prestoユーザーはギガバイトからペタバイトのデータまで最大のビジネス価値を引き出すことができます。
Apache Presto-アーキテクチャ
Prestoのアーキテクチャは、従来のMPP(大規模並列処理)DBMSアーキテクチャとほぼ同じです。 次の図は、Prestoのアーキテクチャを示しています。
上記の図は、さまざまなコンポーネントで構成されています。 次の表に、各コンポーネントの詳細を示します。
S.No | Component & Description |
---|---|
1. |
Client クライアント(Presto CLI)は、SQLステートメントをコーディネーターに送信して結果を取得します。 |
2. |
Coordinator コーディネーターはマスターデーモンです。 コーディネーターは、最初にSQLクエリを解析してから、クエリ実行の分析と計画を行います。 スケジューラは、パイプラインの実行を実行し、最も近いノードに作業を割り当て、進行状況を監視します。 |
3. |
Connector ストレージプラグインはコネクタと呼ばれます。 Hive、HBase、MySQL、Cassandraなどがコネクタとして機能します。それ以外の場合は、カスタムも実装できます。 コネクタは、クエリのメタデータとデータを提供します。 コーディネーターはコネクタを使用して、クエリプランを作成するためのメタデータを取得します。 |
4. |
Worker コーディネーターは、タスクをワーカーノードに割り当てます。 ワーカーはコネクタから実際のデータを取得します。 最後に、ワーカーノードは結果をクライアントに配信します。 |
Presto-ワークフロー
Prestoは、ノードのクラスターで実行される分散システムです。 Prestoの分散クエリエンジンは、インタラクティブな分析用に最適化されており、複雑なクエリ、集計、結合、ウィンドウ関数などの標準ANSI SQLをサポートしています。 プレストアーキテクチャはシンプルで拡張可能です。 Prestoクライアント(CLI)は、SQLステートメントをマスターデーモンコーディネーターに送信します。
スケジューラは、実行パイプラインを介して接続します。 スケジューラは、データに最も近いノードに作業を割り当て、進行状況を監視します。 コーディネーターはタスクを複数のワーカーノードに割り当て、最後にワーカーノードが結果をクライアントに返します。 クライアントは、出力プロセスからデータをプルします。 拡張性が重要な設計です。 Hive、HBase、MySQLなどのプラグ可能なコネクタは、クエリのメタデータとデータを提供します。 Prestoは、これらの異なる種類のデータソースに対してSQLクエリ機能を簡単に提供できるようにする「シンプルなストレージ抽象化」を使用して設計されました。
実行モデル
Prestoは、SQLセマンティクスをサポートするように設計された演算子を使用して、カスタムクエリおよび実行エンジンをサポートします。 スケジューリングの改善に加えて、すべての処理はメモリ内にあり、異なるステージ間でネットワークを介してパイプライン処理されます。 これにより、不必要なI/Oレイテンシのオーバーヘッドが回避されます。
Apache Presto-インストール
この章では、Prestoをマシンにインストールする方法について説明します。 Prestoの基本要件を見てみましょう。
- LinuxまたはMac OS
- Javaバージョン8
次に、次の手順を続けてPrestoをマシンにインストールします。
Javaインストールの検証
マシンにJavaバージョン8が既にインストールされていることが望ましいので、次のコマンドを使用して検証するだけです。
Javaがマシンに正常にインストールされている場合、インストールされているJavaのバージョンを確認できます。 Javaがインストールされていない場合は、次の手順に従ってJava 8をマシンにインストールします。
JDKをダウンロードします。 次のリンクにアクセスして、JDKの最新バージョンをダウンロードします。
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151l
最新バージョンはJDK 8u 92で、ファイルは「jdk-8u92-linux-x64.tar.gz」です。 マシンにファイルをダウンロードしてください。
その後、ファイルを抽出し、特定のディレクトリに移動します。
次に、Javaの代替を設定します。 最後に、Javaがマシンにインストールされます。
Apache Prestoのインストール
次のリンクにアクセスして、Prestoの最新バージョンをダウンロードします。
https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.149/
これで、「presto-server-0.149.tar.gz」の最新バージョンがマシンにダウンロードされます。
tarファイルの抽出
次のコマンドを使用して tar ファイルを抽出します-
構成設定
「データ」ディレクトリを作成する
インストールディレクトリの外側にデータディレクトリを作成します。これは、ログやメタデータなどを保存するために使用され、Prestoのアップグレード時に簡単に保存されるようになります。 次のコードを使用して定義されます-
配置されているパスを表示するには、コマンド「pwd」を使用します。 この場所は、次のnode.propertiesファイルで割り当てられます。
「etc」ディレクトリを作成します
次のコードを使用して、Prestoインストールディレクトリ内にetcディレクトリを作成します-
このディレクトリは構成ファイルを保持します。 各ファイルを1つずつ作成しましょう。
ノードのプロパティ
Prestoノードプロパティファイルには、各ノードに固有の環境設定が含まれています。 次のコードを使用してetcディレクトリ(etc/node.properties)内に作成されます-
すべての変更を行った後、ファイルを保存し、ターミナルを終了します。 ここで、 node.data は、上記で作成されたデータディレクトリの場所のパスです。 node.id は、各ノードの一意の識別子を表します。
JVM Config
etcディレクトリ(etc/jvm.config)内にファイル「jvm.config」を作成します。 このファイルには、Java仮想マシンの起動に使用されるコマンドラインオプションのリストが含まれています。
すべての変更を行った後、ファイルを保存し、ターミナルを終了します。
構成プロパティ
etcディレクトリ(etc/config.properties)内にファイル「config.properties」を作成します。 このファイルには、Prestoサーバーの構成が含まれています。 テスト用に単一のマシンをセットアップする場合、Prestoサーバーは、次のコードを使用して定義された調整プロセスとしてのみ機能できます-
ここに、
- コーディネーター-マスターノード。
- node-scheduler.include-coordinator -コーディネーターでのスケジューリング作業を許可します。
- http-server.http.port -HTTPサーバーのポートを指定します。
- query.max-memory = 5GB -分散メモリの最大量。
- query.max-memory-per-node = 1GB -ノードごとのメモリの最大量。
- discovery-server.enabled -PrestoはDiscoveryサービスを使用してクラスター内のすべてのノードを検索します。
- discovery.uri -DiscoveryサーバーへのURI。
複数のマシンPrestoサーバーをセットアップしている場合、Prestoは調整プロセスとワーカープロセスの両方として機能します。 この構成設定を使用して、複数のマシンでPrestoサーバーをテストします。
コーディネーターの構成
ワーカーの構成
ログのプロパティ
etcディレクトリ(etc/log.properties)内にファイル「log.properties」を作成します。 このファイルには、名前付きロガー階層の最小ログレベルが含まれています。 次のコードを使用して定義されます-
ファイルを保存して、ターミナルを終了します。 ここでは、DEBUG、INFO、WARN、ERRORなどの4つのログレベルが使用されます。 デフォルトのログレベルはINFOです。
カタログのプロパティ
etcディレクトリ(etc/catalog)内に「カタログ」ディレクトリを作成します。 これはデータのマウントに使用されます。 たとえば、次の内容で etc/catalog/jmx.properties を作成し、* jmxコネクタ*をjmxカタログとしてマウントします-
プレストを開始
Prestoは、次のコマンドを使用して開始できます。
次に、これに似た応答が表示されます。
プレストを実行
Prestoサーバーを起動するには、次のコマンドを使用します-
Prestoサーバーを正常に起動した後、「var/log」ディレクトリでログファイルを見つけることができます。
- launcher.log -このログはランチャーによって作成され、サーバーのstdoutおよびstderrストリームに接続されます。
- server.log -これは、Prestoが使用するメインログファイルです。
- http-request.log -サーバーが受信したHTTP要求。
これで、お使いのマシンにPresto構成設定が正常にインストールされました。 Presto CLIをインストールする手順を続けましょう。
Presto CLIをインストールする
Presto CLIは、クエリを実行するための端末ベースのインタラクティブシェルを提供します。
次のリンクにアクセスして、Presto CLIをダウンロードします。
https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.149/
これで、「presto-cli-0.149-executable.jar」がマシンにインストールされます。
CLIを実行する
presto-cliをダウンロードしたら、実行したい場所にコピーします。 この場所は、コーディネーターへのネットワークアクセスを持つ任意のノードです。 最初に、Jarファイルの名前をPrestoに変更します。 次に、 chmod+を使用して実行可能にします。次のコードを使用してx コマンド-
次のコマンドを使用してCLIを実行します。
次の応答が表示されます。
ターミナルで「jps」コマンドを入力すると、実行中のデーモンが表示されます。
プレストを停止
すべての実行を実行した後、次のコマンドを使用してプレストサーバーを停止することができます-
Apache Presto-構成設定
この章では、Prestoの構成設定について説明します。
プレスト検証
Presto Verifierは、Prestoを別のデータベース(MySQLなど)に対してテストしたり、2つのPrestoクラスターを相互にテストしたりするために使用できます。
MySQLでデータベースを作成する
MySQLサーバーを開き、次のコマンドを使用してデータベースを作成します。
これで、サーバーに「テスト」データベースが作成されました。 テーブルを作成し、次のクエリでロードします。
構成設定を追加
プロパティファイルを作成して、ベリファイアを構成します-
ここで、 query-database フィールドに、mysqlデータベース名、ユーザー名、およびパスワードという次の詳細を入力します。
JARファイルをダウンロード
次のリンクにアクセスして、Presto-verifier jarファイルをダウンロードします。
https://repo1.maven.org/maven2/com/facebook/presto/presto-verifier/0.149/
これで、バージョン*「presto-verifier-0.149-executable.jar」*がマシンにダウンロードされます。
JARを実行する
次のコマンドを使用してJARファイルを実行します。
検証を実行
次のコマンドを使用して検証ツールを実行します。
テーブルを作成
次のクエリを使用して、*“ test” *データベースに簡単なテーブルを作成しましょう。
テーブルを挿入
テーブルを作成した後、次のクエリを使用して2つのレコードを挿入します。
検証クエリの実行
検証端末で次のサンプルクエリ(./verifier config.propeties)を実行して、検証結果を確認します。
サンプルクエリ
ここでは、*を選択しますfrom mysql.test.product *クエリはmysqlカタログを参照し、 *test はデータベース名、 product はテーブル名です。 このようにして、Prestoサーバーを使用してmysqlコネクターにアクセスできます。
ここでは、パフォーマンスを確認するために、2つの同じ選択クエリが相互にテストされます。 同様に、他のクエリを実行してパフォーマンスの結果をテストできます。 2つのPrestoクラスターを接続して、パフォーマンス結果を確認することもできます。
Apache Presto-管理ツール
この章では、Prestoで使用される管理ツールについて説明します。 PrestoのWebインターフェースから始めましょう。
Webインターフェース
Prestoは、クエリを監視および管理するためのWebインターフェイスを提供します。 コーディネーターの構成プロパティーで指定されたポート番号からアクセスできます。
PrestoサーバーとPresto CLIを起動します。 その後、次のURLからWebインターフェイスにアクセスできます- http://localhost:8080/
出力は上記の画面のようになります。
ここでは、メインページにクエリのリストと、一意のクエリID、クエリテキスト、クエリ状態、完了率、ユーザー名、このクエリの発信元などの情報があります。 最新のクエリが最初に実行され、次に完了または未完了のクエリが下部に表示されます。
Prestoのパフォーマンスの調整
Prestoクラスターにパフォーマンス関連の問題がある場合は、デフォルトの構成設定を次の設定に変更します。
構成プロパティ
- *仕事。 info -refresh-max-wait *-コーディネーターの作業負荷を軽減します。
- task.max-worker-threads -プロセスを分割し、各ワーカーノードに割り当てます。
- distributed-joins-enabled -ハッシュベースの分散結合。
- node-scheduler.network-topology -ネットワークトポロジをスケジューラに設定します。
JVM設定
デフォルトのJVM設定を次の設定に変更します。 これは、ガベージコレクションの問題の診断に役立ちます。
Apache Presto-基本的なSQL操作
この章では、Prestoでクエリを作成および実行する方法について説明します。 Prestoがサポートする基本的なデータ型を見ていきましょう。
基本データ型
次の表に、Prestoの基本データ型を示します。
S.No | Data type & Description |
---|---|
1. |
VARCHAR 可変長文字データ |
2. |
BIGINT 64ビットの符号付き整数 |
3. |
DOUBLE 64ビット浮動小数点の倍精度値 |
4. |
DECIMAL 固定精度の10進数。 たとえば、DECIMAL(10,3)-10は精度です。 合計桁数および3は、小数点として表されるスケール値です。 スケールはオプションであり、デフォルト値は0です |
5. |
BOOLEAN ブール値trueおよびfalse |
6. |
VARBINARY 可変長バイナリデータ |
7. |
JSON JSONデータ |
8. |
DATE 年月日として表される日付データ型 |
9. |
TIME, TIMESTAMP, TIMESTAMP with TIME ZONE TIME-時刻(時間-分-秒-ミリ秒) TIMESTAMP-日付と時刻 TIMEZAMP with TIME ZONE-値からのタイムゾーンを持つ日付と時刻 |
10. |
INTERVAL 日付と時刻のデータ型をストレッチまたは拡張する |
11. |
ARRAY 指定されたコンポーネントタイプの配列。 たとえば、ARRAY [5,7] |
12. |
MAP 指定されたコンポーネントタイプ間をマッピングします。 たとえば、MAP(ARRAY ['one'、 'two']、ARRAY [5,7]) |
13. |
ROW 名前付きフィールドで構成される行構造 |
Presto-演算子
Presto演算子を次の表にリストします。
S.No | Operator & Description |
---|---|
1. |
Prestoは、+、-、*、/、%などの算術演算子をサポートしています |
2. |
<、>、⇐、> =、=、<> |
3. |
AND、OR、NOT |
4. |
範囲演算子は、特定の範囲の値をテストするために使用されます。 Prestoは、BETWEEN、IS NULL、IS NOT NULL、GREATESTおよびLEASTをサポートします |
5. |
2進算術10進演算子は10進タイプの2進算術演算を実行します単項10進演算子--*演算子*は否定を実行します |
6. |
|
’演算子*は文字列の連結を実行します | |
7. |
日付および時刻データ型で算術加算および減算演算を実行します |
8. |
添字operator []-配列の要素にアクセスします 連結演算子 |
-配列または同じタイプの要素と配列を連結する | |
9. |
マップ添え字演算子[]-指定されたキーに対応する値をマップから取得します |
Apache Presto-SQL関数
今のところ、Prestoでいくつかの簡単な基本クエリを実行することについて議論していました。 この章では、重要なSQL関数について説明します。
数学関数
数学関数は数式で動作します。 次の表で、関数のリストを詳細に説明します。
S.No. | Function & Description |
---|---|
1. |
|
2. |
|
3. |
最も近い整数に切り上げられた x 値を返します |
4. |
ceil(x) ceiling(x)のエイリアス |
5. |
|
6. |
オイラーの数値のdouble値を返します |
7. |
exp(x) オイラー数の指数値を返します |
8. |
|
9. |
from_base(string,radix) 基数として解釈される文字列の値を返します |
10. |
ln(x)
|
11. |
|
12. |
log10(x)
|
13. |
log(x,y)
|
14. |
|
15. |
pi() pi値を返します。 結果はdouble値として返されます |
16. |
値の累乗 ‘p’ を x 値に戻します |
17. |
pow(x,p) power(x、p)のエイリアス |
18. |
角度 x を度ラジアンに変換します |
19. |
rand() ラジアンのエイリアス() |
20. |
擬似乱数値を返します |
21. |
rand(n) random()のエイリアス |
22. |
xの丸められた値を返します |
23. |
round(x,d)
|
24. |
sign(x) xの符号関数を返します。つまり、 引数が0の場合は0 引数が0より大きい場合は1 引数が0より小さい場合は-1 二重引数の場合、関数はさらに返します- 引数がNaNの場合はNaN 引数が+ Infinityの場合は1 引数が-Infinityの場合、-1 |
25. |
|
26. |
戻りタイプはアーチャーです。 結果は x の基数として返されます |
27. |
|
28. |
width_bucket(x, bound1, bound2, n)
|
29. |
配列ビンで指定されたビンに従って x のビン番号を返します |
三角関数
三角関数の引数はradians()として表されます。 次の表に関数を示します。
S.No | Functions & Description |
---|---|
1. |
逆コサイン値(x)を返します |
2. |
asin(x) 逆正弦値(x)を返します |
3. |
atan(x) 逆正接値(x)を返します |
4. |
逆正接値(y/x)を返します |
5. |
cos(x) コサイン値(x)を返します |
6. |
双曲線余弦値(x)を返します |
7. |
サイン値(x)を返します |
8. |
tan(x) タンジェント値(x)を返します |
9. |
tanh(x) 双曲線正接値(x)を返します |
ビット単位関数
次の表に、ビットごとの関数を示します。
S.No | Functions & Description |
---|---|
1. |
ビット数を数える |
2. |
2ビット、 x および y に対してビット単位のAND演算を実行します |
3. |
2ビットのビットごとのOR演算 x、y |
4. |
ビット x のビットごとの非演算 |
5. |
ビット x、y のXOR演算 |
文字列関数
次の表に、文字列関数を示します。
S.No | Functions & Description |
---|---|
1. |
指定された文字列を連結します |
2. |
指定された文字列の長さを返します |
3. |
文字列の小文字形式を返します |
4. |
指定された文字列の大文字形式を返します |
5. |
指定された文字列の左パディング |
6. |
文字列から先頭の空白を削除します |
7. |
replace(string, search, replace) 文字列値を置き換えます |
8. |
文字列に対して実行された操作を元に戻します |
9. |
指定された文字列の右パディング |
10. |
文字列から末尾の空白を削除します |
11. |
区切り文字で文字列を分割し、最大限度のサイズの配列を返します |
12. |
split_part(string, delimiter, index) 区切り文字で文字列を分割し、フィールドインデックスを返します |
13. |
文字列内の部分文字列の開始位置を返します |
14. |
指定された文字列の部分文字列を返します |
15. |
指定された文字列の特定の長さの部分文字列を返します |
16. |
文字列から先頭と末尾の空白を削除します |
日付と時刻の関数
次の表に、日付と時刻の関数を示します。
S.No | Functions & Description |
---|---|
1. |
現在の日付を返します |
2. |
現在の時刻を返します |
3. |
現在のタイムスタンプを返します |
4. |
現在のタイムゾーンを返します |
5. |
現在の日付、タイムスタンプ付きのタイムスタンプを返します |
6. |
現地時間を返します |
7. |
ローカルタイムスタンプを返します |
正規表現関数
次の表に、正規表現関数をリストします。
S.No | Functions & Description |
---|---|
1. |
regexp_extract_all(string, pattern) パターンの正規表現に一致する文字列を返します |
2. |
regexp_extract_all(string, pattern, group) パターンとグループの正規表現に一致する文字列を返します |
3. |
regexp_extract(string, pattern) パターンの正規表現に一致する最初の部分文字列を返します |
4. |
regexp_extract(string, pattern, group) パターンとグループの正規表現に一致する最初の部分文字列を返します |
5. |
パターンに一致する文字列を返します。 文字列が返される場合、値はtrueになり、そうでない場合はfalse |
6. |
regexp_replace(string, pattern) 式に一致する文字列のインスタンスをパターンに置き換えます |
7. |
regexp_replace(string, pattern, replacement) 式に一致する文字列のインスタンスをパターンと置換に置き換えます |
8. |
指定されたパターンの正規表現を分割します |
JSON関数
次の表に、JSON関数を示します。
S.No | Functions & Description |
---|---|
1. |
json_array_contains(json, value) 値がjson配列に存在することを確認してください。 値が存在する場合はtrueを返し、そうでない場合はfalseを返します |
2. |
json_array_get(json_array, index) JSON配列のインデックスの要素を取得します |
3. |
JSON配列の長さを返します |
4. |
JSON構造形式を返します |
5. |
文字列をJSONとして解析します |
6. |
値のサイズを返します |
URL関数
次の表に、URL関数をリストします。
S.No | Functions & Description |
---|---|
1. |
URLのホストを返します |
2. |
URLのパスを返します |
3. |
URLのポートを返します |
4. |
URLのプロトコルを返します |
5. |
URLのクエリ文字列を返します |
集約関数
次の表に、集計関数を示します。
S.No | Functions & Description |
---|---|
1. |
avg(x) 指定された値の平均を返します |
2. |
2つの値から最小値を返します |
3. |
2つの値から最大値を返します |
4. |
値の合計を返します |
5. |
入力行の数を返します |
6. |
入力値の数を返します |
7. |
|
8. |
|
カラー関数
次の表に、カラー関数を示します。
S.No | Functions & Description |
---|---|
1. |
rgb low_colorおよびhigh_colorを使用して単一のバーをレンダリングします |
2. |
bar(x, width, low_color, high_color) 指定された幅で単一のバーをレンダリングします |
3. |
入力された文字列の色の値を返します |
4. |
ANSIカラーコードを使用して特定の色を使用して値xをレンダリングします |
5. |
ブール値bを受け入れ、ANSIカラーコードを使用して緑のtrueまたは赤のfalseをレンダリングします |
6. |
rgb(red, green, blue) 0から255の範囲のintパラメーターとして提供される3つのコンポーネントカラー値のRGB値をキャプチャするカラー値を返します |
配列関数
次の表に、配列関数をリストします。
S.No | Functions & Description |
---|---|
1. |
配列内の最大要素を見つけます |
2. |
配列内の最小要素を見つけます |
3. |
配列内の要素を並べ替えます |
4. |
配列から特定の要素を削除します |
5. |
2つの配列を連結します |
6. |
配列内の指定された要素を検索します。 存在する場合はtrue、そうでない場合はfalseが返されます |
7. |
配列内の指定された要素の位置を見つける |
8. |
2つの配列間の交差を実行します |
9. |
配列要素の位置を返します |
10. |
特定の長さで配列要素をスライスします |
Teradata関数
次の表に、Teradataの関数を示します。
S.No | Functions & Description |
---|---|
1. |
指定された部分文字列を持つ文字列のインデックスを返します |
2. |
指定された文字列の部分文字列を返します。 ここで開始インデックスを指定できます |
3. |
substring(string,start,length) 特定の開始インデックスと文字列の長さに対して、指定された文字列の部分文字列を返します |
Apache Presto-MySQLコネクタ
MySQLコネクタは、外部MySQLデータベースのクエリに使用されます。
前提条件
MySQLサーバーのインストール。
構成設定
マシンにmysqlサーバーがインストールされていることを願っています。 Prestoサーバーでmysqlプロパティを有効にするには、“ mysql.properties” *を“ etc/catalog” *ディレクトリに作成する必要があります。 次のコマンドを発行して、mysql.propertiesファイルを作成します。
ファイルを保存して、ターミナルを終了します。 上記のファイルでは、接続パスワードフィールドにmysqlパスワードを入力する必要があります。
MySQLサーバーでデータベースを作成する
MySQLサーバーを開き、次のコマンドを使用してデータベースを作成します。
これで、サーバーに「チュートリアル」データベースが作成されました。 データベースタイプを有効にするには、クエリウィンドウでコマンド「use tutorials」を使用します。
テーブルを作成
「チュートリアル」データベースに簡単なテーブルを作成しましょう。
テーブルを挿入
テーブルを作成したら、次のクエリを使用して3つのレコードを挿入します。
レコードを選択
すべてのレコードを取得するには、次のクエリを入力します。
問い合わせ
結果
現在、MySQLサーバーを使用してデータを照会しています。 MysqlストレージプラグインをPrestoサーバーに接続しましょう。
Presto CLIを接続する
次のコマンドを入力して、Presto CLIでMySqlプラグインを接続します。
次の応答を受け取ります。
ここで*「チュートリアル」*はmysqlサーバーのスキーマを指します。
スキーマのリスト
mysqlのすべてのスキーマをリストするには、Prestoサーバーで次のクエリを入力します。
問い合わせ
結果
この結果から、最初の3つのスキーマを定義済みとして、最後のスキーマを自分で作成したと結論付けることができます。
スキーマからテーブルを一覧表示する
次のクエリは、チュートリアルスキーマのすべてのテーブルをリストします。
問い合わせ
結果
このスキーマにはテーブルを1つだけ作成しました。 複数のテーブルを作成した場合、すべてのテーブルがリストされます。
テーブルの説明
テーブルフィールドを説明するには、次のクエリを入力します。
問い合わせ
結果
テーブルの列を表示
問い合わせ
結果
テーブルレコードへのアクセス
mysqlテーブルからすべてのレコードを取得するには、次のクエリを発行します。
問い合わせ
結果
この結果から、Prestoでmysqlサーバーレコードを取得できます。
asコマンドを使用してテーブルを作成
Mysqlコネクタはテーブルクエリの作成をサポートしていませんが、asコマンドを使用してテーブルを作成できます。
問い合わせ
結果
このコネクタにはいくつかの制限があるため、行を直接挿入することはできません。 次のクエリをサポートできません-
- つくる
- インサート
- 更新
- 削除する *drop
新しく作成されたテーブルのレコードを表示するには、次のクエリを入力します。
問い合わせ
結果
Apache Presto-JMXコネクター
Java Management Extensions(JMX)は、JVM内で実行されているJava仮想マシンとソフトウェアに関する情報を提供します。 JMXコネクターは、PrestoサーバーのJMX情報を照会するために使用されます。
“ etc/catalog” *ディレクトリの下の“ jmx.properties” *ファイルをすでに有効にしているため。 次に、Perst CLIを接続してJMXプラグインを有効にします。
プレストCLI
問い合わせ
結果
次の応答を受け取ります。
JMXスキーマ
「jmx」内のすべてのスキーマをリストするには、次のクエリを入力します。
問い合わせ
結果
テーブルを表示
「現在の」スキーマのテーブルを表示するには、次のコマンドを使用します。
クエリ1
結果
クエリ2
結果
クエリ3
結果
Apache Presto-HIVEコネクタ
Hiveコネクタを使用すると、Hiveデータウェアハウスに保存されているデータを照会できます。
前提条件
- Hadoop
- Hive
HadoopとHiveがマシンにインストールされていることを願っています。 新しいターミナルですべてのサービスを1つずつ開始します。 次に、次のコマンドを使用してハイブメタストアを開始します。
PrestoはHiveメタストアサービスを使用して、ハイブテーブルの詳細を取得します。
構成設定
“ etc/catalog” *ディレクトリの下に hive.properties ファイルを作成します。 次のコマンドを使用します。
すべての変更を行った後、ファイルを保存してターミナルを終了します。
データベースを作成する
次のクエリを使用してHiveでデータベースを作成します-
問い合わせ
データベースが作成されたら、*“ show databases” *コマンドを使用して確認できます。
テーブルを作成
Create Tableは、Hiveでテーブルを作成するために使用されるステートメントです。 たとえば、次のクエリを使用します。
テーブルを挿入
次のクエリを使用して、ハイブのテーブルにレコードを挿入します。
Presto CLIを起動します
次のコマンドを使用して、Presto CLIを起動してHiveストレージプラグインを接続できます。
次の応答を受け取ります。
スキーマのリスト
Hiveコネクターのすべてのスキーマをリストするには、次のコマンドを入力します。
問い合わせ
結果
リスト表
「チュートリアル」スキーマのすべてのテーブルをリストするには、次のクエリを使用します。
問い合わせ
結果
テーブルを取得
次のクエリを使用して、ハイブのテーブルからすべてのレコードを取得します。
問い合わせ
結果
Apache Presto-KAFKAコネクター
PrestoのKafkaコネクタを使用すると、Prestoを使用してApache Kafkaのデータにアクセスできます。
前提条件
次のApacheプロジェクトの最新バージョンをダウンロードしてインストールします。
- Apache ZooKeeper
- アパッチカフカ
ZooKeeperを起動します
次のコマンドを使用して、ZooKeeperサーバーを起動します。
現在、ZooKeeperは2181でポートを開始します。
カフカを開始
次のコマンドを使用して、別の端末でKafkaを起動します。
kafkaの起動後、ポート番号9092が使用されます。
TPCHデータ
ダウンロードtpch-kafka
これで、上記のコマンドを使用してMavenセントラルからローダーをダウンロードしました。 次のような応答が返されます。
次に、次のコマンドを使用して実行可能にします。
tpch-kafkaを実行します
次のコマンドを使用して、kafka-tpchプログラムを実行し、tpchデータを含む多数のトピックをプリロードします。
問い合わせ
結果
現在、Kafkaテーブルの顧客、注文、サプライヤーなどは、tpchを使用してロードされます。
構成設定を追加
Prestoサーバーに次のKafkaコネクター構成設定を追加しましょう。
上記の構成では、KafkaテーブルはKafka-tpchプログラムを使用してロードされます。
Presto CLIを起動します
次のコマンドを使用してPresto CLIを起動します。
- 「tpch」*はKafkaコネクタのスキーマであり、次のような応答を受け取ります。
リスト表
次のクエリは、*“ tpch” *スキーマ内のすべてのテーブルをリストします。
問い合わせ
結果
顧客テーブルの説明
次のクエリでは、*“ customer” *テーブルについて説明しています。
問い合わせ
結果
Apache Presto-JDBCインターフェース
PrestoのJDBCインターフェースは、Javaアプリケーションへのアクセスに使用されます。
前提条件
presto-jdbc-0.150.jarをインストールします
次のリンクにアクセスして、JDBC jarファイルをダウンロードできます。
https://repo1.maven.org/maven2/com/facebook/presto/presto-jdbc/0.150/
jarファイルをダウンロードしたら、Javaアプリケーションのクラスパスに追加します。
シンプルなアプリケーションを作成する
JDBCインターフェースを使用して簡単なJavaアプリケーションを作成しましょう。
コーディング-PrestoJdbcSample.java
ファイルを保存して、アプリケーションを終了します。 次に、1つのターミナルでPrestoサーバーを起動し、新しいターミナルを開いて結果をコンパイルおよび実行します。 手順は次のとおりです-
編集
実行
出力
Apache Presto-カスタム関数アプリケーション
Mavenプロジェクトを作成して、Prestoカスタム関数を開発します。
SimpleFunctionsFactory.java
FunctionFactoryインターフェイスを実装するSimpleFunctionsFactoryクラスを作成します。
SimpleFunctionsPlugin.java
プラグインインターフェイスを実装するSimpleFunctionsPluginクラスを作成します。
リソースファイルを追加
実装パッケージで指定されているリソースファイルを作成します。
次に、リソースファイルの場所@/path/to/resource/に移動します
次に、変更を追加し、
pom.xml
次の依存関係をpom.xmlファイルに追加します。
SimpleFunctions.java
Presto属性を使用してSimpleFunctionsクラスを作成します。
アプリケーションが作成されたら、アプリケーションをコンパイルして実行します。 JARファイルが生成されます。 ファイルをコピーし、JARファイルをターゲットのPrestoサーバープラグインディレクトリに移動します。
編集
実行
次に、Prestoサーバーを再起動し、Prestoクライアントを接続します。 次に、以下で説明するカスタム関数アプリケーションを実行します。