Scala SparkSQL暂存表行数与配置单元行数

Scala SparkSQL暂存表行数与配置单元行数,scala,hive,apache-spark-sql,spark-dataframe,spark-cassandra-connector,Scala,Hive,Apache Spark Sql,Spark Dataframe,Spark Cassandra Connector,我试图使用Hadoop 2.7上的Spark 2.1.1将数据从Cassandra提取到一个特定的分区配置单元表中。为此,我将来自Cassandra的所有数据转换为rdd,并通过rdd.toDF()将其转换为数据帧,然后传递到以下函数中: public def writeToHive(ss: SparkSession, df: DataFrame) { df.createOrReplaceTempView(tablename) val cols = df.columns val sc

我试图使用Hadoop 2.7上的Spark 2.1.1将数据从Cassandra提取到一个特定的分区配置单元表中。为此,我将来自Cassandra的所有数据转换为rdd,并通过rdd.toDF()将其转换为数据帧,然后传递到以下函数中:

public def writeToHive(ss: SparkSession, df: DataFrame) {
  df.createOrReplaceTempView(tablename)
  val cols = df.columns
  val schema = df.schema

  // logs 358
  LOG.info(s"""SELECT COUNT(*) FROM ${tablename}""")

  val outdf = ss.sql(s"""INSERT INTO TABLE ${db}.${t} PARTITION (date="${destPartition}") SELECT * FROM ${tablename}""")

  // Have also tried the following lines below, but yielded the same results
  // var dfInput_1 = dfInput.withColumn("region", lit(s"${destPartition}"))
  // dfInput_1.write.mode("append").insertInto(s"${db}.${t}")

  // logs 358
  LOG.info(s"""SELECT COUNT(*) FROM ${tablename}""")
  // logs 423
  LOG.info(s"""SELECT COUNT(*) FROM ${db}.${t} where date='${destPartition}'""")
}
当查看Cassandra时,表中确实有358行。我在Hortonworks上看到了这篇文章,但似乎没有解决办法。我已尝试将spark.sql.hive.MetaStorePartitionPrunning设置为true,但在行计数中未看到任何更改

希望得到有关行计数之间存在差异的原因的任何反馈。谢谢


编辑:错误数据传入。。。。我们应该知道,有时候数据包含非utf8字符,比如日语或汉语。检查数据是否包含任何此类非utf8字符

如果是这种情况,请以ORC格式插入。默认情况下,它是文本,文本不支持非utf8字符。

“非utf8字符,如日语或汉语”-这没有意义。我想你指的是UTF-8和ASCII在“英语”字母表中共享相同的代码。也许你应该重读一遍