Dataframe 使用spark将Hbase表转储到CSV会导致数据丢失
使用phoenix和spark将数据从hbase导出到csv时会导致数据丢失。我的hbase表中有2200万行,当我将其导出到csv时,只有1900万行。缺少300万行 在写入csv之前,我尝试过缓存数据帧,但结果仍然是1900万行。我使用了coalesce,因为我需要在一个CSV文件中保存所有内容 我还尝试使用导出!记录在凤凰城,但这里的问题是,数据是巨大的,需要永远加载Dataframe 使用spark将Hbase表转储到CSV会导致数据丢失,dataframe,apache-spark,hbase,export-to-csv,Dataframe,Apache Spark,Hbase,Export To Csv,使用phoenix和spark将数据从hbase导出到csv时会导致数据丢失。我的hbase表中有2200万行,当我将其导出到csv时,只有1900万行。缺少300万行 在写入csv之前,我尝试过缓存数据帧,但结果仍然是1900万行。我使用了coalesce,因为我需要在一个CSV文件中保存所有内容 我还尝试使用导出!记录在凤凰城,但这里的问题是,数据是巨大的,需要永远加载 !!输出格式csv !!记录数据.csv 从表中选择* !!记录 !!退出 如果有,我可以导出我的hbase表而不丢失任何
import org.apache.log4j.lf5.LogLevel
import org.apache.spark.sql.SparkSession
object ExportCSV {
def main(args: Array[String]): Unit = {
val table_name = "xyz"
val phoenix_zk = "jdbc:phoenix:zkurl"
Logger.getLogger("org").setLevel(Level.ERROR)
Logger.getLogger("akka").setLevel(Level.ERROR)
val spark = SparkSession.builder().master("local[*]")
.config("spark.debug.maxToStringFields", "100")
//.config("spark.driver.maxResultSize", "2g")
.config("spark.yarn.executor.memoryOverhead", "4g")
.appName("SparkPhoenix")
.getOrCreate()
val df = spark.read.format("jdbc").options(
Map("driver" -> "org.apache.phoenix.jdbc.PhoenixDriver",
"url" -> phoenix_zk,
"dbtable" -> xyz)).load()
print(df.count()) //22 million rows in dataframe
df.cache()
print(df.count()) //19 million rows after cache
df.explain(extended = true)
df.coalesce(1).write.mode("append").option("header", "true").csv("/tchiring/export_test")
}
}
因此,很可能您正在阅读您的表格两次。delta是否可能是HBase端的其他操作/流程的结果?因此,很可能您正在阅读您的表格两次。delta是否可能是HBase端的其他操作/流程的结果?