全部产品

JindoFS

本文介绍如何使用Databricks 读写JindoFS数据源数据。

前提条件

注意

版本确认:JindoFS依赖SmartData组件,DDI读写JindoFS之前需要确保目标EMR集群中的SmartData组件版本与DDI集群中SmartData版本大版本一致(即客户端与服务端在版本2.7.x之间兼容,在3.1.0及以上版本之间兼容)

本案例DDI和EMR集群使用的SmartData 版本为2.7.x。

读写JindoFS数据

1.网络打通

说明

DDI集群访问EMR集群之前需要先进行网络打通,即在ddi集群数据源管理处添加emr hdfs数据源。

data

2.EMR集群JFS Block模式的打通

  • 主要配置SmartData下的namespace:

说明

可以参考说明文档:Block模式使用说明

    • 1)修改jfs.namespacestest

    • 2)新增自定义配置:jfs.namespaces.test.oss.urioss://<oss_bucket>/<oss_dir>/

      (同Region和账号下的OSS Bucket下的一个目录)

    • 3)新增自定义配置:jfs.namespaces.test.modeblock

    • 4)同账号下免AK和AS

    • data
  • 测试(在EMR集群上能够访问jfs即可)

警告

1.Jindofs block模式存的是hdfs数据块到oss上,不能够直接在oss上传,需手动put一个文件到jfs才能够生效

2.直接指定  jfs://namespace/ -> 即可访问配置的oss path

data

3.读写JindoFS代码实现

%spark
val pathIn = "jfs://test/test1.txt"
val pathOut = "jfs://test/data_result"
//读取jfs数据
val text = sc.textFile(pathIn).flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_+_)
//控制台输出结果
text.take(3).foreach(print)
//将结果写入到jfs
text.saveAsTextFile(pathOut)
data

集群master节点查看是否写入到jfs

data