我繼續和錯誤當創建dataframe或蒸汽從某些CSV文件頭包含BOM(字節順序標記)字符
這是錯誤信息:
AnalysisException: [RequestId = e09c7c8d - 2399 - 4 - d6a - 84 - ae - 216 e6a9f8f6e ErrorClass = INVALID_PARAMETER_VALUE。INVALID_FIELD_LENGTH)不知道column_1.name太長了。最大長度是255個字符。
下麵是完整的錯誤消息
文件/磚/火花/ python / pyspark / sql /流/讀寫。py: 1481年DataStreamWriter。toTable(自我,表,格式、outputMode partitionBy, queryName, * *選項)1479如果queryName不是沒有:1480 self.queryName (queryName) - > 1481返回self._sq (self._jwrite.toTable(表))文件/磚/火花/ python / lib / py4j-0.10.9.7-src.zip / py4j / java_gateway。py: 1322年JavaMember。__call__(自我,* args) 1316命令=原型。CALL_COMMAND_NAME + 1318 \ 1317 self.command_header + \ args_command + \ 1319原型。END_COMMAND_PART 1321回答= self.gateway_client.send_command(命令)- > 1322 return_value = get_return_value(1323回答,自我。gateway_client,自我。target_id self.name) 1325年在temp_args temp_arg: 1326如果hasattr (temp_arg“_detach”):
下麵的代碼正常工作如果文件頭沒有BOM。通知我嚐試添加編碼選項但這並不工作。
從pyspark.sql。功能導入input_file_name、current_timestamp點燃def startRawSteam(模式):#配置自動加載程序streaming_query =(火花。readStream .format .option (“cloudFiles (“cloudFiles”)。格式”、“csv”) .option (“cloudFiles。schemaLocation”, raw_checkpoint_path) .option (“9”, ", ") .option .option (“inferSchema”、“true”) (“lineSep”、“\ r \ n”) #指定樣式的EOL字符(CRLF) .option .option(“頭”,“假”)(“編碼”,“UTF-8-sig”) .option (“pathGlobfilter”, file_pattern) .load (f“{external_location}”) .select(“*”,點燃(“不明”).alias(“醫院”),input_file_name () .alias (“source_file”), current_timestamp () .alias (“processing_time”)) .writeStream .option (“checkpointLocation”, raw_checkpoint_path) .trigger (availableNow = true) .toTable (raw_table_name))返回streaming_query
讓我知道如果你有一個解決方案
我想我需要修改的文件,但是我不知道如何去做,在磚,我不希望我將文件下載到本地機器,因為他們是大的,我不允許。s3 bucket的文件,我想修複它們,或者使用dbutils磚
任何幫助都是讚賞