Я использую numPartitions, lowerBound, upperBound в Spark Dataframe для извлечения больших таблиц из oracle. Но это дает мне данные, эквивалентные только одному разделу.
Предположим, что количество разделов равно 10, а общее количество записей равно 100, тогда только 10 записей (всего записей / numPartitions) я могу принять в Hive.
Ниже приведен фрагмент моего кода
val hiveContext = SparkApp.getHiveContext("AppName")
val jdbcUsername = "MYUSERNAME"
val jdbcPassword = "MYPASSWORD"
val jdbcDatabase ="DBNAME"
val jdbcUrl = "jdbc:oracle:thin:@//hostname:1522/servicename"
val lowerBound = 1
val totalRecords = 100
val partitions = 10
val orclTableName = "MYTEST_TABLE"
val columnName = "rownum"
val connectionProperties = new Properties()
connectionProperties.put("user", s"${jdbcUsername}")
connectionProperties.put("password", s"${jdbcPassword}")
connectionProperties.put("driver","oracle.jdbc.driver.OracleDriver")
val orclTableDF = hiveContext.read.jdbc(url=jdbcUrl,table=orclTableName,columnName = columnName,lowerBound=lowerBound, upperBound= totalRecords , numPartitions=partitions, connectionProperties=connectionProperties)
orclTableDF.write.saveAsTable ( "MYTEST_NEW_TABLE")
Не могли бы вы дать мне знать, что мне не хватает.