私は大きなテーブルを読んで(〜100M行)読み込もうとしています。テーブルには、PostgreSQLであり、我々は読んでいる次のようにpostgreSQLから100,000行を読み込み、寄木張りに書き込む
val connectionProperties = new Properties()
connectionProperties.put("user", "$USER")
connectionProperties.put("password", "$PASSWORD")
// val connection = DriverManager.getConnection("$SERVER", "$USER", "$PASSWORD")
//connection.isClosed()
val jdbc_url = s"jdbc:postgresql://${"$HOST"}:${$PORT}/${"$DB"}"
val df = spark.read.option("inferSchema", true).jdbc(jdbc_url, "$TABLE", connectionProperties)
しかし、私たちのSQLテーブルが(形式$ 100,000.23で)moneyデータ型として2列があります。 sparkで読み込むと、doubleに変換されて例外がスローされます。
私たちはやってみました: a)列データをDoubleにキャストします。しかし、Sparkも自動的に倍増するので、これは役に立たない。価値観に問題があります。 (used b)データは既にカンマでDataFrameに保存されています。 PostgreSQLの方言を使用しようとしています(https://github.com/apache/spark/blob/master/sql/core/src/main/scala/org/apache/spark/sql/jdbc/PostgresDialect.scala)
本当にありがとうございます。
そのラメMoneyデータ型をよりポータブルなデータ型に変換するSELECTクエリを呼び出そうとしましたか?* Sparkがデータを受け取る前に?例えば。 '(TBLからCCとしてのA、B、キャスト(Cを10進数(16,2)として選択)x' –
また、10進数(、)は、浮動小数点型です。そして、財務的なユースケースで地獄を遊んでください... –