Я пытаюсь использовать pyspark для создания внешней таблицы.
Мой код похож на следующий:
query="""
CREATE EXTERNAL TABLE IF NOT EXISTS myschema.mytable
(
col1 STRING,
col2 STRING,
col3 STRING,
col4 STRING,
...
... a further 600+ columns here
...
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES
(
'separatorChar' = ',',
'quoteChar' = '"',
'escapeChar' = '\\'
)
LOCATION 's3://mybucket/myfolder/'
"""
spark.sql(query)
Когда я запускаю приведенный выше код, я получаю следующую ошибкуmessage
u'org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.StringIndexOutOfBoundsException: String index out of range: 0;'
Traceback (most recent call last):
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/session.py", line 767, in sql
return DataFrame(self._jsparkSession.sql(sqlQuery), self._wrapped)
File "/usr/lib/spark/python/lib/py4j-0.10.7-src.zip/py4j/java_gateway.py", line 1257, in __call__
answer, self.gateway_client, self.target_id, self.name)
File "/usr/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 69, in deco
raise AnalysisException(s.split(': ', 1)[1], stackTrace)
AnalysisException: u'org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.StringIndexOutOfBoundsException: String index out of range: 0;'
Однако, когда я беру точно такой же оператор CREATE EXTERNAL TABLE и запускаю его вручную в редакторе запросов Athena, он работает просто отлично.Я подозреваю, что проблема заключается в кавычках / двойных кавычках в разделе SERDEPROPERTIES, но я пробовал многочисленные их комбинации, но безрезультатно.если у кого-то есть рабочий запрос Spark, который использует аналогичное определение OpenCSVSerde в операторе создания внешней таблицы, я был бы признателен за его вклад.Я использую версию Spark 2.4.3 с python 3.something
Я должен был сказать, что мой входной файл представляет собой CSV со смесью текстовых и числовых полей, причем текстовые поля заключены в двойные кавычки.