【问题标题】:Load Parquet file into HDFS table-Pyspark将 Parquet 文件加载到 HDFS 表中-Pyspark
【发布时间】:2019-08-07 16:59:19
【问题描述】:

我正在尝试加载一个文件并将其作为 parquet 文件写入我的 HDFS 路径。但是,每当我运行下面的代码时,都不会插入任何值。

下面是我的代码:

#Import Key functions
from pyspark.sql import SparkSession
spark=SparkSession.builder.appName("Spark_TESTT").config("spark.config.option","yarn-client").getOrCreate()

#Call Database
spark.sql("USE db1")


#Create(or load) Table #1
spark.sql("create  external table if not exists mx_test ( c0 string, c1 string, c2 string) COMMENT 'Sample Test' stored as parquet location 'hdfs://hadoop_data/path/mx_test'")


df = spark.read.load("/user/files/sample*.txt", format="text" ,inferSchema="false", header="false", sep=",")
df.write.save('hdfs://hadoop_data/path/mx_test/new.parquet", format="parquet")

当我执行 selct * from 语句时,它会显示以下内容:

关于为什么会发生这种情况的任何想法?

【问题讨论】:

    标签: apache-spark hive pyspark hdfs


    【解决方案1】:

    您是否尝试将数据加载到 hdfs://hadoop_data/path/mx_test/ 这个目录(as table pointed to this directory),然后检查您是否能够在 Hive 表中看到数据。

    df.write.save('hdfs://hadoop_data/path/mx_test/', format="parquet")
    

    UPDATE:

    请检查parquet file vs hive table列名中的列名

    如果列名不同,则为它们设置 hive parquet table displays null 值。

    How to check column names, types in parquet file?

    Use parquet-tools to check the schema for the parquet file:

    bash$ parquet-tools meta hdfs://<namenode_address:8020><hdfs_path_to_parquet_file>
    

    (或)

    Copy parquet file to local the check the schema:

    bash$ parquet-tools meta <local_path_to_parquet_file>
    

    现在创建与 parquet 文件匹配的 hive table schema,然后检查您是否能够获取数据而不是 NULL

    【讨论】:

    • @James Davinport,请检查更新的答案解决了配置单元表中的空值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-11
    • 2020-03-27
    • 1970-01-01
    • 2021-09-03
    • 2020-02-01
    • 2023-04-05
    相关资源
    最近更新 更多