如何将二进制文件转换成rdd或Dataframe?

oogrdqng  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(344)

http://spark.apache.org/docs/latest/sql-programming-guide.html#interoperating-使用RDD
该链接显示如何将txt文件更改为rdd,然后更改为dataframe。
那么如何处理二进制文件呢?
举个例子,非常感谢。
这里有一个类似的问题没有答案:将二进制数据读入(py)sparkDataframe
更详细地说,我不知道如何解析二进制文件。例如,我可以将txt文件解析为以下行或字:

JavaRDD<Person> people = sc.textFile("examples/src/main/resources/people.txt").map(
  new Function<String, Person>() {
    public Person call(String line) throws Exception {
      String[] parts = line.split(",");

      Person person = new Person();
      person.setName(parts[0]);
      person.setAge(Integer.parseInt(parts[1].trim()));

      return person;
    }
  });

似乎我只需要一个api,可以这样解析二进制文件或二进制流:

JavaRDD<Person> people = sc.textFile("examples/src/main/resources/people.bin").map(
      new Function<String, Person>() {
        public Person call(/*stream or binary file*/) throws Exception {
          /*code to construct every row*/
          return person;
        }
      });

编辑:二进制文件包含结构数据(关系数据库的表,数据库是一个自制的数据库),我知道结构数据的元信息,我计划将结构数据改成rdd[row]。
当我使用 FileSystem 的api(http://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/filesystem.html)将二进制流写入hdfs,二进制文件是可拆分的。我不知道如何像上面的示例代码那样解析二进制文件。所以到目前为止我什么都没试过。

rjjhvcjd

rjjhvcjd1#

spark已经有了一个二进制记录读取器(我相信在1.3.1中可以使用,至少在scalaapi中可以使用)。

sc.binaryRecord(path: string, recordLength: int, conf)

不过,将这些二进制文件转换为可接受的格式进行处理是您的责任。

相关问题