2017-01-20 2 views
0

В IBM Bluemix я создал DSX PySpark notebook, с Python 2.6 и Spark 2.0. Я использую IBM dashDB в качестве хранилища данных. Я могу успешно аутентифицировать и читать таблицы, но когда я пытаюсь записать обратно в новую таблицу, я получаю эту ту же проблему, как описано в этом link.DSX PySpark записывает данные в dashDB с пользовательским диалектом JDBC

Чтобы исправить это, было suggested зарегистрировать новый пользовательский dashDB JDBC диалекте с использованием моста Scala с pixiedust библиотеки, но когда я достигаю этой стадии в моей тетради я получаю следующее сообщение об ошибке:

pixiedustRunner.scala:13: error: type BeanProperty is not a member of package reflect 
    @scala.reflect.BeanProperty 

Код моста scala в PySpark со 2-го звена:

%%scala cl=dialect global=true 
import org.apache.spark.sql.jdbc._ 
import org.apache.spark.sql.types.{StringType, BooleanType, DataType} 

object dashDBCustomDialect extends JdbcDialect { 
    override def canHandle(url: String): Boolean = url.startsWith("jdbc:db2") 
    override def getJDBCType(dt: DataType): Option[JdbcType] = dt match { 
      case StringType => Option(JdbcType("VARCHAR(" + maxStringColumnLength + ")", java.sql.Types.VARCHAR)) 
      case BooleanType => Option(JdbcType("CHAR(1)", java.sql.Types.CHAR)) 
      case _ => None 
    } 
} 
JdbcDialects.registerDialect(dashDBCustomDialect) 

В чем проблема?

ответ

2

Это известная проблема в PixieDust из-за изменений api для BeanProperty, которые перешли из пакета scala.reflect в Scala 2.10 в пакет scala.beans со Scala 2.11. Исправление будет предоставлено в ближайшее время, но пока вы можете обойти эту ошибку, используя Spark 1.6, который использует Scala 2.10.

1

FYI. Мы также работаем над обновлением DSX непосредственно с помощью диалекта JDBC для dashDB, чтобы вам больше не пришлось делать это как часть вашего ноутбука. Исправление будет выпущено в ближайшее время. Так что следите за обновлениями.