これまでのところ、Teradataからデータフレームを読み取り、Spark用のTeradata jdbcコネクタを使用することができます。次のように読書のための 構文は次のとおりです。TeradataのSparkからTeradataテーブルにデータフレームを書き込む
ため
val df = hc.read.format("jdbc").options(
Map(
"url" -> url,
"dbtable" -> (sel * from tableA) as data,
"driver" -> "com.teradata.jdbc.TeraDriver"
)
).load()
HC = hiveContext、URL =接続URL私がTeradata表にデータフレームを保存します。私は、ステートメントを挿入しDBTABLE変更することにより、上記の構文を使用してみました
val df = hc.read.format("jdbc").options(
Map(
"url" -> url,
"dbtable" -> (insert into db.tabA values (1,2,3)) as data,
"driver" -> "com.teradata.jdbc.TeraDriver"
)
).load()
しかし、上記の文は私にエラーを与えた:
Error: Exception in thread "main" java.sql.SQLException: [Teradata Database] [TeraJDBC 15.10.00.22] [Error 3706] [SQLState 42000] Syntax error: expected something between '(' and the 'insert' keyword.
私はスパークでのTeradataへのデータフレームを保存したい、何ですそれを行う最良の方法?
SQL例外は、Teradataのは、「(挿入...」コマンド(それは括弧を望んでいない)を受信文句で試してみてください '" DBTABLE。 " - >" db.tabAの値(1,2,3)に挿入してください。 "、しかし、私はあなたがチェックしなければならないものがあると思います。私はSparkの専門家ではありませんが、 – Insac
私は例(http://www.sparkexpert.com/2015/04/17/save-apache-spark-dataframe-to-database/)を見つけました。あなたの例では、Dataframeを持っていません。まず、データフレームを作成する必要があります(挿入に入れた「1,2,3」)。 「insertIntoJDBC」メソッドを使用します。 – Insac
ありがとう@Insac。 Teradataにデータフレームを書き込む方法を見つけました。私はScalikeJDBCを使用して、TeradataへのJDBC接続を作成し、APIを介して書き込みを行っています。 –