Ограничение на количество символов имени столбца в MemSQL

У меня есть задание загрузки данных (коннектор искры) в MemSQL, и оно не выполняется из-за того, что длина имени столбца превышает допустимый предел. Есть ли способ исправить это? Я не могу изменить имена столбцов, так как они генерируются программно, и я не могу это контролировать.

Сообщение об ошибке:

Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Identifier name '10000_BREAKING_BAD_IS_WAY_BETTER_THAN_THE_GAME_OF_THRONES_10000_LOWER_TOLERANCE' is too long
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
    at com.mysql.jdbc.Util.getInstance(Util.java:360)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:978)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3887)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3823)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2435)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2582)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2526)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1618)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1549)
    at com.memsql.spark.connector.DataFrameFunctions.createMemSQLTableFromSchema(DataFrameFunctions.scala:169)
    at com.memsql.spark.connector.DataFrameFunctions.createMemSQLTableAs(DataFrameFunctions.scala:104)
    at com.rb.pal.dm.MemSQLWriter$.main(MemSQLWriter.scala:65)
    at com.rb.pal.dm.MemSQLWriter.main(MemSQLWriter.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:665)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:170)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:193)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:112)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

Есть ли параметр конфигурации, который я могу использовать, чтобы разрешить использование большего количества символов для имен столбцов?

Я загружаю данные прямо из паркетных файлов в таблицу MemSQL.

df.createMemSQLTableAs(dbName, tableName, dbHost, dbPort, user, password, useKeylessShardedOptimization = true)

person trips    schedule 22.10.2015    source источник


Ответы (1)


К сожалению нет. На момент ответа на этот вопрос нет доступной конфигурации для этой проблемы.

Если возможно, попробуйте настроить длину на уровне генератора запросов.

person eklhad    schedule 22.10.2015
comment
Как насчет использования столбца JSON? Будет ли это по-прежнему вызывать ошибку? Есть ли в createMemSQLTableAs конструкция, поддерживающая столбец JSON? - person trips; 22.10.2015
comment
Если вы имеете в виду использование ключа в столбце JSON, длина которого превышает ограничение имени столбца в 64 символа, да, это разрешено. Если вы хотите добавить этот столбец в свою таблицу, создавая вызов функции, вы должны использовать параметр extraCols и указать тип как JSON. - person eklhad; 26.10.2015