次の制限事項は、Teradata QueryGridでのSparkコネクタの使用に影響します。
- Sparkコネクタは、ACIDテーブルまたはトランザクション テーブルをサポートしません。
- システム間のトランザクション セマンティックはサポートされていません。
データをエクスポートしてリモート システムにコミットした後は、ローカル システム上で後続のエラーまたはアボートが発生しても、リモート リクエストをロールバックしません。
- Sparkイニシエータ コネクタでEXPLAINコマンドを使用した場合、リモート サーバーはクエリーと実行プランのデータを返しません。
- タイムスタンプ精度のデフォルト値は9です。Spark - Teradata間のリンクを使用した場合、Teradata QueryGridは小数点以下6桁を超えるデータを切り捨てます。
- 限られた述語プッシュダウンのみを利用できます。
- Spark SQLターゲット コネクタでは現在、外部関数の実行(FFE)機能はサポートされていません。
- Sparkではロールがサポートされないため、Spark SQLコネクタはロールをサポートしません。
- デフォルトでは、Spark SQLターゲット コネクタは、エクスポート クエリーが成功したときにエクスポートされた行数に関係なく、エクスポートされた行数として1を返します。Collect Approximate Activity Countコネクタ プロパティをtrueに設定すると、エクスポートされる行数が返されますが、少量のパフォーマンス オーバーヘッドが生じます。Spark SQLテーブルに同時挿入がある場合、不正確な行数が表示されることがあり、その結果、正確な数値ではなく、おおよその結果になります。
- Spark ThriftサーバーまたはSpark Shellのいずれかを起動してSparkコネクタで使用する場合は、Teradataでspark.task.maxFailuresプロパティを1に設定し、spark.blacklist.enabledプロパティをfalseに設定することを推奨します。
- 次の結果は、Apache Sparkの制限事項が原因の可能性があります。
- Spark 2.1以降: Sparkイニシエータを使用しているときに、ターゲット テーブルがすでに作成されていることを表わす非ネイティブ テーブルの後でターゲット テーブルのスキーマを変更する場合、スキーマの変更を反映するには、非ネイティブ テーブルを再作成する必要があります。
- Spark 2.2以降: Sparkターゲット コネクタを使用してDATE型のデータをインポートする場合、またはSparkイニシエータを使用してDATE型のデータをエクスポートする場合は、Sparkのデータ値が正しくない可能性があります。
- Spark 2.2以降: SparkはChar/Varcharをサポートしていません。したがって、Sparkターゲット コネクタを使用してQueryGridからデータを挿入し、ターゲット テーブルにchar/varchar列が含まれている場合は、QueryGridからのデータが正しくない可能性があります。正しくないデータの発生を避けるには、Char/Varcharの代わりにStringを使用します。
- Sparkがアップグレードされた場合、または標準のSpark JARファイルの場所が変更された場合は、tdqg-node restartが必要です。
- リモート システムのタイム ゾーンがイニシエータ システムのタイム ゾーンと異なる場合、WHERE句で使用される日付リテラルはリモート システムのタイム ゾーンに変換されません。
- UTF-16補助文字がテーブル内で2バイトを超えると、データが切り捨てられます。
- テーブルの文字セットがLatinまたはUTF-16以外の文字セットに設定されている場合、SparkテーブルのVARCHAR、STRING、およびCHAR列ではIMPORTはサポートされません。
- LIMIT句の条件プッシュダウンはサポートされていません。Spark SQLイニシエータSHOWコマンドは、限られた数の行を表示できますが、すべての行がインポートされます。