pysparkDataframe,通过jdbc读取配置单元表时出现时间戳错误

hm2xizp9  于 2021-07-13  发布在  Spark
关注(0)|答案(0)|浏览(182)

我将spark3.0.1与hadoop3.2结合使用,并将各种parquet保存为hive表,其中的列存储为时间戳。我能够运行sql查询,包括dbeaver中配置单元表的timestamp列,并且能够将配置单元表加载到powerbi中,没有任何问题。我甚至可以将parquet文件读入pyspark,它工作正常,这让我相信这是jdbc连接的问题。
我的sparksession如下所示:

spark = SparkSession \
    .builder \
    .appName("myApp") \
    .enableHiveSupport() \
    .getOrCreate()

在表格中阅读:

url = "jdbc:hive2://localhost:10016"
df = spark.read.jdbc(url, 'df')

执行df.show()时会出现以下错误:

Py4JJavaError: An error occurred while calling o32.showString.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 0.0 failed 1 times, most recent failure: Lost task 0.0 in stage 0.0 (TID 0, host.docker.internal, executor driver): java.lang.IllegalArgumentException: Timestamp format must be yyyy-mm-dd hh:mm:ss[.fffffffff]
    at java.sql.Timestamp.valueOf(Timestamp.java:204)

我尝试了多个表,甚至先将值强制转换为一个字符串,但仍然出现了错误。如果我删除timestamp类型的列,dataframes将按预期工作。我试图演示将jdbc导入spark thrift server的不同方法,因此,尽管读取Parquet文件是可行的,但我希望能够使用jdbc查询数据。
下面是使用beeline的时间戳表的格式

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题