来自sqoop导入的序列文件

问题描述 投票:0回答:1

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

我如何将此文件读入RDD或数据框?

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

pyspark sqoop sequencefile
1个回答
0
投票

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

您需要执行以下步骤:

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

示例:sqoop导入-连接jdbc:mysql://ms.itversity.com/retail_export-用户名retail_user-密码迭代-表客户-m 1 --target-dir'/ user / srikarthik / udemy / practice4 / problem2 / outputseq'--as-sequencefile --delete-target-dir --bindir / home / srikarthik / sqoopjars /

step2:另外,您需要从以下链接下载jar文件:http://www.java2s.com/Code/Jar/s/Downloadsqoop144hadoop200jar.htm

step3:假设客户表是使用sqoop作为序列文件导入的。运行spark-shell --jars path-to-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

step4:现在在spark-shell内的命令下运行

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)
© www.soinside.com 2019 - 2024. All rights reserved.