Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pyspark 从sqoop导入序列文件_Pyspark_Sqoop_Sequencefile - Fatal编程技术网

Pyspark 从sqoop导入序列文件

Pyspark 从sqoop导入序列文件,pyspark,sqoop,sequencefile,Pyspark,Sqoop,Sequencefile,我使用sqoop导入了一个表,并将其保存为序列文件 如何将此文件读入RDD或数据帧 我已经尝试了sc.sequenceFile(),但我不确定作为keyClass和value类传递什么。我尝试使用org.apache.hadoop.io.Text、org.apache.hadoop.io.LongWritable for keyClass和valueClass 但它没有起作用。我正在使用pyspark读取文件 在python中不起作用,但在SCALA中起作用: 您需要执行以下步骤: 步骤1: 如

我使用sqoop导入了一个表,并将其保存为序列文件

如何将此文件读入RDD或数据帧

我已经尝试了
sc.sequenceFile()
,但我不确定作为keyClass和value类传递什么。我尝试使用org.apache.hadoop.io.Text、org.apache.hadoop.io.LongWritable for keyClass和valueClass
但它没有起作用。我正在使用pyspark读取文件

在python中不起作用,但在SCALA中起作用:

您需要执行以下步骤:

步骤1: 如果要从sqoop导入序列文件,则会生成一个jar文件,在读取序列文件时需要将其用作ValueClass。这个jar文件通常放在/tmp文件夹中,但您可以使用--bindir选项将其重定向到特定文件夹(即,重定向到本地文件夹而不是hdfs)

例如: sqoop导入--连接jdbc:mysql://ms.itversity.com/retail_export -- 用户名retail_user--密码itversity--表customers--m1--目标目录'/user/srikarthik/udemy/practice4/problem2/outputseq'--作为序列文件--删除目标目录--bindir/home/srikarthik/sqoopjars/

步骤2: 此外,您还需要从以下链接下载jar文件:

步骤3: 假设customers表是使用sqoop作为序列文件导入的。 运行sparkshell--jars路径到customers.jar,sqoop-1.4.4-hadoop200.jar

例如:

spark-shell --master yarn --jars /home/srikarthik/sqoopjars/customers.jar,/home/srikarthik/tejdata/kjar/sqoop-1.4.4-hadoop200.jar
步骤4:现在在spark外壳内运行以下命令

scala> import org.apache.hadoop.io.LongWritable

scala> val data = sc.sequenceFile[LongWritable,customers]("/user/srikarthik/udemy/practice4/problem2/outputseq")

scala> data.map(tup => (tup._1.get(), tup._2.toString())).collect.foreach(println)
您可以使用package读取带有DataFrame API的序列文件,而无需事先了解模式(也称为keyClass和valueClass)。
请注意,当前版本仅与Spark 2.4兼容

$pyspark--packages-seq-datasource-v2-0.2.0.jar
df=spark.read.format(“seq”).load(“data.seq”)
df.show()

对语法和演示文稿进行了少量编辑,并删除了不必要的文本。熟悉这些标签的人可能会对这个问题有所帮助,以防有标签知识的志愿者会增加更多的清晰度。问题仍然需要OP的关注,以包括一个问题。