このトピックでは、データ開発に関するよくある質問について説明します。
-
リソース
-
PyODPS
-
EMR Spark
-
ノードとワークフロー
-
テーブル
-
操作ログと保持期間
-
バッチ操作
-
BI 連携
-
API 呼び出し
-
その他
PyODPS でサードパーティパッケージを呼び出すにはどうすればよいですか?
専用スケジューリングリソースグループを使用します。詳細については、「PyODPS ノードでサードパーティパッケージを呼び出す」をご参照ください。
テーブルデータをクエリした後に、クエリ結果をダウンロードできるかどうかを制御するにはどうすればよいですか?
DataWorks でデータをダウンロードするには、まずダウンロード機能を有効にする必要があります。ダウンロードオプションが表示されない場合、ご利用のワークスペースでダウンロードが有効になっていません。Alibaba Cloud アカウント (root ユーザー) またはワークスペース管理者に連絡して、ワークスペース管理でこの機能を有効にしてください。DataWorks コンソールで、左側のナビゲーションウィンドウで [ワークスペース設定] をクリックします。[セキュリティ設定] セクションで、[SELECT 結果のダウンロード] スイッチを切り替えて、クエリ結果のダウンロードを許可またはブロックします。スイッチが青色 (有効) の場合、SELECT クエリの結果をダウンロードできます。
クエリを実行すると、結果の右下隅にダウンロードオプションが表示されます。結果ページの下部にあるツールバーの [ダウンロード] ボタンをクリックして、データをダウンロードします。
エンジンの制限により、DataWorks インターフェイスでは最大 10,000 行までしかダウンロードできません。
10,000 行を超えるテーブルデータをダウンロードするにはどうすればよいですか?
MaxCompute Tunnel を使用します。詳細については、「SQLTask と Tunnel を使用して大量のデータをエクスポートする」をご参照ください。
DataWorks で EMR のビジュアルテーブル作成が「call emr exception」というエラーで失敗するのはなぜですか?
-
考えられる原因:EMR をホストする ECS クラスターのセキュリティグループに必要なルールがありません。EMR クラスターを登録する際に、このエラーを回避するために次のセキュリティグループポリシーを追加してください。
EMR をホストする ECS クラスターのセキュリティグループに必要なルールがありません。EMR クラスターを登録する際に、このエラーを回避するために次のセキュリティグループポリシーを追加してください。
-
認証ポリシー:許可
-
プロトコルタイプ:カスタム TCP
-
ポート範囲:8898/8898
-
認証オブジェクト:100.104.0.0/16
-
-
ソリューション:EMR をホストする ECS クラスターのセキュリティグループ設定を確認し、上記のポリシーを追加します。
ノード内でリソースを使用するにはどうすればよいですか?
対象のリソースノードを右クリックし、Insert Resource Path を選択します。
##@resource_reference{"pyodps_packagetest.py"}
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath('pyodps_packagetest.py'))) # ワークスペースにリソースを追加
import pyodps_packagetest # リソースを参照
pyodps_packagetest.printname() # メソッドを呼び出す
DataWorks にアップロードしたリソースをダウンロードするにはどうすればよいですか?
対象のリソースノードを右クリックし、View Historical Versions を選択します。[バージョン情報] ダイアログボックスのバージョン履歴テーブルには、バージョン、送信者、送信時刻、変更タイプ、ステータス、備考、および操作の列が含まれています。[操作] 列で、[コード] をクリックしてそのバージョンのリソースコンテンツを表示するか、[ロールバック] をクリックしてリソースをそのバージョンに戻します。ダイアログボックスの下部にある [比較] ボタンを使用して、バージョンを比較します。
30 MB を超えるリソースをアップロードするにはどうすればよいですか?
30 MB を超えるリソースは、Tunnel コマンドを使用してアップロードします。アップロード後、DataWorks で MaxCompute リソースとして追加して使用します。詳細については、「odpscmd でアップロードしたリソースを DataWorks で使用するにはどうすればよいですか?」をご参照ください。
odpscmd でアップロードしたリソースを DataWorks で使用するにはどうすればよいですか?
odpscmd でアップロードしたリソースを DataWorks で使用するには、DataStudio の MaxCompute リソース配下に追加します。DataStudio の左側のナビゲーションウィンドウで、[MaxCompute リソース] をクリックします。メインパネルには、odpscmd でアップロードされたものを含む、現在のワークスペース内のすべての MaxCompute リソースが表示されます。対象のリソースを選択し、右側の詳細パネルで [データ開発に追加] をクリックして、データ開発ワークフローに含めます。
ローカルで開発した JAR ファイルを DataWorks にアップロードして実行するにはどうすればよいですか?
データ開発インターフェイスで JAR ファイルをリソースとしてアップロードします。ノードで使用するには、リソースノードを右クリックし、Insert Resource Path を選択します (これにより、ノードの先頭にコメント行が追加されます)。次に、リソース名で JAR を直接実行します。DataStudio で、左側のファイルツリーの [リソース] ノードを展開し、右クリックして [新規作成] > [JAR] を選択して JAR リソースを作成します。右側の [リソースのアップロード] パネルで、アップロードアイコンをクリックし、ローカルの JAR ファイル (例:ip2region.jar) を選択します。[ODPS リソースとしてアップロード] チェックボックスをオンにして、リソースを MaxCompute (ODPS) に同期します。[アップロード] をクリックした後、リソースを送信してリリースします。そうしないと、ランタイムに resource not found エラーが発生します。
例:Shell ノードで、##@resource_reference{"test.jar"} java -jar test.jar を使用します。
DataWorks で MaxCompute テーブルリソースを使用するにはどうすればよいですか?
DataWorks は、グラフィカルインターフェイスを介した MaxCompute テーブルリソースのアップロードをサポートしていません。テーブルリソースを参照する方法については、MaxCompute のUDF の例:テーブルリソースの参照をご参照ください。DataWorks で MaxCompute テーブルリソースを使用するには、次の手順に従います:
-
MaxCompute で、次の SQL ステートメントを使用して、テーブルをテーブルリソースとして追加します。詳細については、「リソースの追加」をご参照ください。
add table <table_name> [partition (<spec>)] [as <alias>] [comment '<comment>'][-f]; -
DataStudio で、
get_cache_table.pyという名前の Python リソースを作成し、MaxCompute で追加されたテーブルリソースを走査してアクセスします。Python コードについては、「コードの開発」をご参照ください。
-
DataWorks のデータ開発ページで、新しい関数を作成します。この例では、関数名は
table_udfです。次のフィールドを入力します:
-
Class Name:
get_cache_table.DistCacheTableExample -
Resources:ドロップダウンから Python ファイル
get_cache_table.pyを選択します。Script Mode でテーブルリソースを追加します。
-
-
関数を登録した後、使用例に従ってテストデータを準備し、登録した関数を呼び出します。
DataWorks でタスクを送信する際に、「No default or available resource group is configured. (デフォルトまたは利用可能なリソースグループが設定されていません。)」というエラーが表示されます。リソースグループを設定するにはどうすればよいですか?
これを解決するには、ノード編集ページの右側にある Scheduling Settings セクションに移動します。Resource Group for Scheduling を見つけ、ドロップダウンから目的のリソースグループを選択します。適切なリソースグループが表示されない場合は、次のようにリソースグループをワークスペースにバインドします。
-
DataWorks 管理コンソールにログインします。リージョンを切り替えた後、左側のナビゲーションウィンドウで Resource Group をクリックして、リソースグループ を開きます。
-
[リソースグループリスト] ページで、作成したリソースグループを見つけ、Actions 列の ホームスペースの変更 をクリックします。
-
ホームスペースの変更 ページで、DataWorks ワークスペースを見つけ、Actions 列の Associate をクリックします。
これらの手順を完了した後、ノード編集ページに戻ります。右側の Scheduling Settings で、ドロップダウンから目的のスケジューリングリソースグループを選択します。
Python リソースから別の Python リソースを呼び出すことはできますか?
2つのリソースが同じワークスペースにあれば、Python リソースは別の Python リソースを呼び出すことができます。
PyODPS は、ユーザー定義関数を呼び出してサードパーティパッケージを使用することをサポートしていますか?
DataFrame の map メソッドを通じて test 関数を使用したくない場合、PyODPS はユーザー定義関数を直接呼び出してサードパーティパッケージをインポートすることもサポートしています。詳細については、「PyODPS でサードパーティパッケージを使用する」をご参照ください。
PyODPS 3 で Pickle ファイルを呼び出すと、「_pickle.UnpicklingError: invalid load key, '\xef」というエラーが発生します
コードに特殊文字が含まれている場合は、アップロードする前に ZIP ファイルに圧縮してください。その後、コード内で解凍して使用します。
MaxCompute リソースを削除するにはどうすればよいですか?
リソースを作成した後、次のように削除できます。基本モードでは、リソースを右クリックして直接削除します。標準モードでは、まず開発環境でリソースを削除し、次に本番環境で削除します。次の例は、本番環境でリソースを削除する方法を示しています。
標準モードでは、開発環境と本番環境は分離されています。DataStudio でリソースを削除しても、開発環境から削除されるだけです。本番環境から削除するには、削除操作をリリースする必要があります。
-
開発環境でリソースを削除します。関連するワークフローの下で、 に移動します。削除するリソースを右クリックし、Delete をクリックします。確認ダイアログで、Confirm をクリックします。
-
本番環境からリソースを削除します。削除操作はデプロイメントインターフェイスに保留中のデプロイメントレコードを作成し、レコードがデプロイされた後にのみリソースは本番環境から削除されます。DataStudio ページの右上隅にある DataStudio をクリックし、変更タイプを [非公開] にフィルタリングし、前の手順で説明したようにリソースを非公開にするデプロイメントパッケージを見つけ、Actions をクリックしてから Deploy をクリックします。ポップアップページで、Deploy をクリックします。デプロイメントを完了すると、リソースは本番環境から削除されます。
EMR クラスターで Kerberos を有効にした後、EMR Spark ノードで YARN-Cluster モードで spark-submit を実行すると、「DlfMetaStoreClientFactory not found」というエラーが表示されるのはなぜですか?DlfMetaStoreClientFactory not found?
-
エラーの詳細:
Class com.aliyun.datalake.metastore.hive2.DlfMetaStoreClientFactory not found? -
原因:EMR クラスターで Kerberos を有効にすると、YARN-Cluster モードの Driver のクラスパスに、指定されたディレクトリの JAR ファイルが自動的に含まれないため、Spark タスクが失敗します。詳細については、「ECS 上の EMR に関するよくある質問」をご参照ください。
-
ソリューション:次のように DLF 関連のパッケージを手動で指定します:
-
EMR クラスターで Kerberos を有効にした後、
spark-submitを使用して YARN-Cluster モードでタスクを送信する際に、--jarsパラメーターを追加します。アプリケーションの依存関係とともに、/opt/apps/METASTORE/metastore-current/hive2ディレクトリのすべての JAR ファイルを含めます。EMR Spark の YARN-Cluster モードでは、以下に示すように DLF 関連のパッケージを手動で指定します。
重要YARN-Cluster モードでは、
--jarsパラメーター内のすべての依存関係はカンマで区切る必要があります。ディレクトリパスはサポートされていません。spark-submit --deploy-mode cluster --class org.apache.spark.examples.SparkPi --master yarn --jars /opt/apps/METASTORE/metastore-current/hive2/aliyun-java-sdk-dlf-shaded-0.2.9.jar,/opt/apps/METASTORE/metastore-current/hive2/metastore-client-common-0.2.22.jar,/opt/apps/METASTORE/metastore-current/hive2/metastore-client-hive2-0.2.22.jar,/opt/apps/METASTORE/metastore-current/hive2/metastore-client-hive-common-0.2.22.jar,/opt/apps/METASTORE/metastore-current/hive2/shims-package-0.2.22.jar /opt/apps/SPARK3/spark3-current/examples/jars/spark-examples_2.12-3.4.2.jar -
DLF 関連のパッケージを手動で指定する場合、DLF および OSS へのアクセス権限を持つ AccessKey 情報を設定します。そうしないと、STS 認証エラーが発生する可能性があります。例:
-
Process Output>>> java.io.IOException: Response{protocol=http/1.1, code=403, message=Forbidden, url=http://xxx.xxx.xxx.xxx/latest/meta-data/Ram/security-credentials/} -
at com.aliyun.datalake.metastore.common.STSHelper.getEMRSTSToken(STSHelper.java:82)
タスクレベルで、ノードの右側にある [高度な設定] に次のパラメーターを追加します (グローバルに適用するには、これらをクラスターサービス設定で Spark グローバルパラメーターとして設定します): "spark.hadoop.dlf.catalog.akMode":"MANUAL", "spark.hadoop.dlf.catalog.accessKeyId":"xxxxxxx", "spark.hadoop.dlf.catalog.accessKeySecret":"xxxxxxxxx" -
-
削除したノードを復元するにはどうすればよいですか?
ノードを削除した後、ゴミ箱から復元します。DataStudio で、左側のナビゲーションウィンドウの [ゴミ箱] をクリックします。削除されたノードのリストで、対象のノードを右クリックし、[復元] を選択します。
ノードのバージョンを表示するにはどうすればよいですか?
ノード設定インターフェイスを開いて、そのバージョンを表示します。
バージョンは送信後にのみ生成されます。
ノード設定インターフェイスの右側で、[バージョン] タブをクリックしてバージョンリストを表示します。これには、ファイル ID、バージョン番号、送信者、送信時刻が含まれます。[操作] 列で、[コード] をクリックして特定のバージョンのコードを表示するか、[ロールバック] をクリックしてそのバージョンに戻します。任意の 2 つのバージョンを選択し、下部にある [比較] ボタンをクリックして、それらの違いを確認します。
ワークフローをクローンするにはどうすればよいですか?
ノードグループ機能を使用します。詳細については、「ノードグループの使用」をご参照ください。
ワークスペースからノードコードをエクスポートするにはどうすればよいですか?
移行アシスタント機能を使用します。詳細については、「移行アシスタント」をご参照ください。
ワークフローノードの送信ステータスを確認するにはどうすればよいですか?
ビジネスノードの送信ステータスを表示したい場合は、 を選択し、対応するビジネスプロセスリストを展開して、現在のビジネスプロセス内のすべてのノードのステータスを表示できます。ノード名の左側に
アイコンが表示されている場合、そのノードは送信済みであることを意味します。ノード名の左側に
アイコンが表示されていない場合、そのノードは未送信であることを意味します。
ワークフローに複数のノードが含まれている場合、それらのスケジューリング情報を一括で設定できますか?
DataWorks は、ワークフローレベルでのスケジューリング情報の設定をサポートしていません。ワークフロー内のノードのスケジューリング情報を一括で設定することはできません。各ノードを個別に設定する必要があります。たとえば、ワークフローに 20 個のノードが含まれている場合、各ノードのスケジューリング情報を個別に設定する必要があります。
ノードを削除した場合、そのインスタンスは影響を受けますか?
スケジューリングシステムは、タスクの時間属性に基づいて毎日 1 つ以上のインスタンスを生成します。タスクがしばらく実行された後に削除した場合、既存のインスタンスは残ります。タスクが削除された後にインスタンスがトリガーされると、コードが存在しなくなるため失敗します。
ノードタスクを変更して本番環境にリリースすると、本番環境の以前のエラーのあったノードは上書きされますか?
いいえ。以前のノードインスタンスは上書きされません。未実行のインスタンスは最新のコードを使用します。スケジューリングパラメーターが変更された場合は、インスタンスを再生成して実行する必要があります。
新しく作成したテーブルを可視化するにはどうすればよいですか?
データ開発、テーブル管理、またはワークフロー内のテーブルコンテナでテーブルを作成できます。DataStudio で、左側のナビゲーションウィンドウの [テーブル管理] をクリックします。上部のツールバーの [新しいテーブル] アイコンをクリックします。右側の詳細パネルで、テーブル名、MaxCompute エンジンインスタンス、およびテーブルソースを設定します。基本プロパティセクションには、中国語名、第 1 レベルカテゴリ、第 2 レベルカテゴリ、および説明が含まれます。物理モデル設計では、パーティションタイプ、ライフサイクル、レベル、物理分類、およびテーブルタイプ (内部テーブル/外部テーブル) を設定します。パネルの上部で、[DDL モード]、[開発環境からロード]、[開発環境に送信]、[本番環境からロード]、[本番環境に送信] などのボタンを使用します。テーブルディレクトリ内のテーブルを右クリックすると、[テーブル名の変更]、[データのインポート]、[テーブルの削除] などの操作を実行できます。
本番テーブルにフィールドを追加するにはどうすればよいですか?
Alibaba Cloud アカウント (root ユーザー) は、Table Management ページで本番テーブルにフィールドを追加し、変更を本番環境に送信できます。
RAM ユーザーが Table Management ページで本番テーブルにフィールドを追加し、変更を本番環境に送信するには、運用保守またはプロジェクト管理者ロールが必要です。
テーブルを削除するにはどうすればよいですか?
開発テーブルを削除するには、データ開発インターフェイスで行います。
本番テーブルを削除するには:
-
データマップのマイデータから削除します。
-
ODPS SQL ノードを作成し、DROP 文を入力して実行します。ODPS SQL ノードの作成の詳細については、「ODPS SQL タスクの開発」をご参照ください。DROP 構文については、「テーブル操作」をご参照ください。
[マイデータ] ページで、対象のテーブルを選択し、[操作] 列の [削除] をクリックして単一テーブルを削除します。複数のテーブルを削除するには、それらを選択し、ページの下部にある [バッチ削除] をクリックします。
ローカルデータを MaxCompute テーブルにアップロードするにはどうすればよいですか?
DataStudio で、テーブルインポート機能を使用してローカルデータをアップロードします。ツールバーの [インポート] アイコンをクリックして、[データインポートウィザード] ダイアログを開きます。次のパラメーターを設定します:[データインポート方法の選択] を [ローカルファイルのアップロード] に、[ファイル形式] を [CSV] に設定し、[参照...] をクリックしてローカルの CSV ファイルを選択します ( .csv ファイルのみがサポートされています)、[区切り文字の選択] を [カンマ] に、[ソース文字セット] を [GBK] に、[インポート開始行] を [1] に設定し、[最初の行をヘッダーとして使用] をオンにします。
EMR クラスターでテーブル作成が失敗し、インターフェイスに「call emr exception?」と表示される
-
EMR をホストする ECS クラスターのセキュリティグループに必要なルールがありません。EMR クラスターを登録する際に、このエラーを回避するために次のセキュリティグループポリシーを追加してください。
-
認証ポリシー:許可
-
プロトコルタイプ:カスタム TCP
-
ポート範囲:8898/8898
-
認証オブジェクト:100.104.0.0/16
-
-
ソリューション:
EMR をホストする ECS クラスターのセキュリティグループ設定を確認し、上記のポリシーを追加します。
開発環境から本番環境のデータにアクセスするにはどうすればよいですか?
標準モードでは、project_name.table_name を使用して本番データをクエリします。
基本モードから標準モードにアップグレードした場合、project_name.table_name で本番データをクエリする前に、プロデューサーロールの権限をリクエストしてください。権限のリクエストの詳細については、「テーブル権限のリクエスト」をご参照ください。
データ開発インターフェイスで過去の実行ログを取得するにはどうすればよいですか?
データ開発インターフェイスで、左側のサイドバーにある Runtime Logs モジュールを見つけて、過去の実行ログを表示します。
データ開発の実行履歴はどのくらいの期間保持されますか?
デフォルトでは、データ開発インターフェイスの実行履歴は 3 日間保持されます。
本番の運用保守センターでのログとインスタンスの保持期間については、「ログとインスタンスはどのくらいの期間保持されますか?」をご参照ください。
ノード、リソース、関数、およびその他のオブジェクトのプロパティをバッチで変更するにはどうすればよいですか?
DataStudio インターフェイスで、左側のツールバーで Batch Operation をクリックします。ノード、リソース、関数をバッチで変更できます。変更後、一括で送信し、タスクリリースインターフェイスでそれらをリリースして、変更を本番環境に適用します。
バッチ操作インターフェイスで、対象のノードを選択します。下部のアクションバーには、[送信]、[所有者の変更]、[エンジンインスタンスの変更] ボタンがあります。[その他] をクリックすると、[スケジューリングリソースグループの変更]、[再実行プロパティの変更]、[スケジューリングタイプの変更]、[スケジューリング周期の変更]、[タイムアウト期間の変更]、[削除] などの追加操作にアクセスできます。右上隅の [操作履歴] をクリックして、過去のバッチ操作を表示します。
データ開発ページで、ワークフロー配下のノードが使用するスケジューリングリソースグループをバッチで変更するにはどうすればよいですか?
DataStudio で、ワークフローの [リソースグループオーケストレーション] タブに移動します。ここで、ワークフロー内のすべてのノードのスケジューリングリソースグループをバッチで変更できます。変更後、[送信] をクリックして一括で送信し、タスクリリースインターフェイスでそれらをリリースして、変更を本番環境に適用します。[リソースグループオーケストレーション] タブでは、左側のナビゲーションツリーを使用して、ノードをタイプ (データ統合、MaxCompute、Hologres など) でフィルタリングできます。右上のセクションには、[共有スケジューリングリソースグループ] と [専用リソースグループ] の設定エリアが表示されます。その下にあるノードリストでは、ノード名、ノードタイプ、エンジンタイプ、エンジンインスタンス、または所有者でフィルタリングできます。変更するノードを選択し、下部にある [リソースグループの切り替え] をクリックして変更を適用します。
Power BI を MaxCompute に接続する際にエラーが発生します。これを解決するにはどうすればよいですか?
MaxCompute は Power BI 接続をサポートしていません。代わりに Hologres を使用することを推奨します。詳細については、「エンドポイント」をご参照ください。
OpenAPI の呼び出しが「access is forbidden. Please first activate DataWorks Enterprise Edition or Flagship Edition」で失敗します
OpenAPI には DataWorks Enterprise Edition が必要です。詳細については、「DataWorks OpenAPI の概要」をご参照ください。
Python SDK の使用例を取得するにはどうすればよいですか?
関連する API ページで、[デバッグ] をクリックして Python SDK の例を表示します。
タスクがインスタンス ID なしで実行されます。ODPS アクセラレーションモードを無効にするにはどうすればよいですか?
インスタンス ID を取得するには、アクセラレーションモードを無効にする必要があります。
DataWorks は 10,000 行のダウンロードしかサポートしていません。それ以上の行数をダウンロードするには、インスタンス ID が必要な Tunnel を使用します。
Task submitted successfully
Task running...
Task running...
Task running...
Task running...
Congratulations! Your task was selected to run in MaxCompute Query Acceleration mode
SQL executed successfully in MaxCompute Query Acceleration mode
SQL: SELECT a.real_name...
タスクを実行する際に、ODPS SQL ノードエディターで set odps.mcqa.disable=true; を追加します (SELECT 文と一緒に実行します)。
エラー:[202:ERROR_GROUP_NOT_ENABLE]:group is not available
タスク実行中に、「Job Submit Failed! submit job failed directly! Caused by: execute task failed, exception: [202:ERROR_GROUP_NOT_ENABLE]:group is not available」というエラーが表示されます。
考えられる原因:バインドされているリソースグループが利用できません。
ソリューション:DataWorks コンソールにログインします。左側のナビゲーションウィンドウで [リソースグループ] をクリックします。リソースグループを見つけ、その [ステータス] が [実行中] であることを確認します。そうでない場合は、リソースグループを再起動するか、別の利用可能なリソースグループを使用してください。