gpt4 book ai didi

hadoop - 在 Hadoop 中运行 pyspark 时不是文件异常

转载 作者:行者123 更新时间:2023-12-02 21:15:29 24 4
gpt4 key购买 nike

我从 2 个差异源中将两个数据集舀到 Hive 中。我使用在 hive 中创建了两个表的联合

create table db.table as select table 1 union select table 2

我使用 HiveContext 在 pyspark 中的这个表来执行一些分析功能,比如对列进行字符串索引。
hc=HiveContext(sc)
data = hc.sql("select * from db.table")
from pyspark.sql import SQLContext, Row, HiveContext
from pyspark.ml.feature import StringIndexer
indexer = StringIndexer(inputCol="col_cat", outputCol="cat_indexed")
indexed=indexer.fit(data).transform(data)

但是我收到以下错误
py4j.protocol.Py4JJavaError: An error occurred while calling o63.fit.
: java.io.IOException: Not a file:

所以我进入了HDFS
hadoop fs -ls /hive/db/table

我找到了这张 table ,我不知道这里有什么问题。
我觉得是因为我没有创建外部表。但它上次没有外部工作。

最佳答案

好的,所以我找到了解决方法,我从目录中移动了文件
即从

/hive/db/table/file


/hive/db/file

通过做
Hadoop fs -mv /hive/db/table/file /hive/db/file

现在它可以工作了,问题是 Hive 中的联合在表之间创建了一个分区,因此创建了额外的目录来保存文件。因此,当 Spark 尝试访问它们时,它指向的目录。所以我将文件位置更改为 spark 指向的位置。

关于hadoop - 在 Hadoop 中运行 pyspark 时不是文件异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38880227/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com