val DF = sparkSession.read.format("jdbc")
  .option("url", 
"jdbc:hive2://tidb4ser:11000/hivetest;hive.server2.proxy.user=jztwk")
  .option("dbtable", "(SELECT * FROM tb_user where created=1602864000) as tmp")
  .option("user", "admin")
  .option("password", "000000")
  .option("fetchsize", "2000") //每处理批次的条数
  .option("driver", "org.apache.hive.jdbc.HiveDriver")
  .load()
that I can read data from hive

but I want write data to hive

DF.write.format("jdbc")
  .option("url", 
"jdbc:hive2://tidb4ser:11000/hivetest;hive.server2.proxy.user=jztwk")
  .option("dbtable", "hivetest.tb_user1")
  .option("user", "admin")
  .option("password", "000000")
  .option("driver", "org.apache.hive.jdbc.HiveDriver")
  .partitionBy("created")
  .mode(SaveMode.Overwrite)
  .save()
I get error

21/07/30 17:16:38 INFO Utils: Resolved authority: tidb4ser:11000
Exception in thread "main" org.apache.hive.service.cli.HiveSQLException: Error 
while compiling statement: FAILED: ParseException line 1:53 cannot recognize 
input near 'TEXT' ',' 'password' in column type
at org.apache.hive.jdbc.Utils.verifySuccess(Utils.java:266)
at org.apache.hive.jdbc.Utils.verifySuccessWithInfo(Utils.java:252)
at org.apache.hive.jdbc.HiveStatement.runAsyncOnServer(HiveStatement.java:318)
at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:259)
at org.apache.hive.jdbc.HiveStatement.executeUpdate(HiveStatement.java:487)
at 
org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.createTable(JdbcUtils.scala:859)
at 
org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:81)
at 
org.apache.spark.sql.execution.datasources.SaveIntoDataSourceCommand.run(SaveIntoDataSourceCommand.scala:45)
at 
org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult$lzycompute(commands.scala:70)
at 
org.apache.spark.sql.execution.command.ExecutedCommandExec.sideEffectResult(commands.scala:68)
at 
org.apache.spark.sql.execution.command.ExecutedCommandExec.doExecute(commands.scala:86)
at 
org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$1.apply(SparkPlan.scala:131)
at 
org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$1.apply(SparkPlan.scala:127)
at 
org.apache.spark.sql.execution.SparkPlan$$anonfun$executeQuery$1.apply(SparkPlan.scala:155)
at 
org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151)
at org.apache.spark.sql.execution.SparkPlan.executeQuery(SparkPlan.scala:152)
at org.apache.spark.sql.execution.SparkPlan.execute(SparkPlan.scala:127)
at 
org.apache.spark.sql.execution.QueryExecution.toRdd$lzycompute(QueryExecution.scala:80)
at org.apache.spark.sql.execution.QueryExecution.toRdd(QueryExecution.scala:80)
at 
org.apache.spark.sql.DataFrameWriter$$anonfun$runCommand$1.apply(DataFrameWriter.scala:668)
at 
org.apache.spark.sql.DataFrameWriter$$anonfun$runCommand$1.apply(DataFrameWriter.scala:668)
at 
org.apache.spark.sql.execution.SQLExecution$$anonfun$withNewExecutionId$1.apply(SQLExecution.scala:78)
at 
org.apache.spark.sql.execution.SQLExecution$.withSQLConfPropagated(SQLExecution.scala:125)
at 
org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:73)
at org.apache.spark.sql.DataFrameWriter.runCommand(DataFrameWriter.scala:668)
at 
org.apache.spark.sql.DataFrameWriter.saveToV1Source(DataFrameWriter.scala:276)
at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:270)
at com.join.hive.writer.HiveWriter.saveTo(HiveWriter.scala:29)
at com.join.synctool$.main(synctool.scala:42)
at com.join.synctool.main(synctool.scala)
Caused by: org.apache.hive.service.cli.HiveSQLException: Error while compiling 
statement: FAILED: ParseException line 1:53 cannot recognize input near 'TEXT' 
',' 'password' in column type
at 
org.apache.hive.service.cli.operation.Operation.toSQLException(Operation.java:329)
at 
org.apache.hive.service.cli.operation.SQLOperation.prepare(SQLOperation.java:207)
at 
org.apache.hive.service.cli.operation.SQLOperation.runInternal(SQLOperation.java:290)
at org.apache.hive.service.cli.operation.Operation.run(Operation.java:260)
at 
org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementInternal(HiveSessionImpl.java:505)
at 
org.apache.hive.service.cli.session.HiveSessionImpl.executeStatementAsync(HiveSessionImpl.java:491)
at 
org.apache.hive.service.cli.CLIService.executeStatementAsync(CLIService.java:295)
at 
org.apache.hive.service.cli.thrift.ThriftCLIService.ExecuteStatement(ThriftCLIService.java:507)
at 
org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1437)
at 
org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement.getResult(TCLIService.java:1422)
at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
at 
org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge$Server$TUGIAssumingProcessor.process(HadoopThriftAuthBridge.java:567)
at 
org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:286)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: 
org.apache.hadoop.hive.ql.parse.ParseException:line 1:53 cannot recognize input 
near 'TEXT' ',' 'password' in column type
at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:221)
at org.apache.hadoop.hive.ql.parse.ParseUtils.parse(ParseUtils.java:75)
at org.apache.hadoop.hive.ql.parse.ParseUtils.parse(ParseUtils.java:68)
at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:564)
at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1425)
at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:1398)
at 
org.apache.hive.service.cli.operation.SQLOperation.prepare(SQLOperation.java:205)
... 15 more
21/07/30 17:16:39 INFO SparkContext: Invoking stop() from shutdown hook
21/07/30 17:16:39 INFO SparkUI: Stopped Spark web UI at 
http://WIN-20201231YGA:4040



igyu

Reply via email to