HDFS_READ
HDFS_READ函数从 Hadoop 分布式文件系统( HDFS )中以分隔符分隔的文件读取数据。
模式为 SYSFUN。
- 文件地址
- 在 HDFS 中指定服务器地址和输入文件路径的表达式。 file-url 是一个VARCHAR(512)值。
- 选项
- 指定 “名称 = 值 ”对列表的表达式。 每对单词之间必须用空格隔开。 选项是一个VARCHAR(256)值。 选项可以包含以下任意名称和值对:
- 分隔符=分隔符-值
- 标识在由file-url 指定的输入文件中用作分隔符的字符。
- 用户=用户价值
- 指定一个 IBM® InfoSphere® BigInsights® 用户名,该用户名有权访问由 file-url 指定的输入文件。
- 密码=密码值
- 为 IBM InfoSphere BigInsights 用户指定密码,该用户由user=user-value 标识。
- authport=authport-value
- 指定用于输入表单身份验证的端口。 缺省值为 8080。
HDFS_READ函数返回一个表,其中输入文件中的每条记录对应一行。 HDFS_READ是一个通用表函数,这意味着返回表的列是在引用表时定义的,而不是在定义表时定义的。
示例1 :读取一个 HDFS 文件,其 URL 为 http://hdfssrv.svl.ibm.com:8080。 输入文件的分隔符为逗号。 使用默认授权端口。 输入文件中的记录有两个字段:一个 DECIMAL(8,3) 字段和一个 INTEGER 字段。
SELECT * FROM TABLE(
HDFS_READ(
'http://hdfssrv.svl.ibm.com:8080',
'delimiter=, user=biadmin password=passw0rd'))
AS T1(C1 DECIMAL(8,3), C2 INTEGER);示例2: 读取一个 HDFS 文件,该文件的 URL 是成功Jaql查询输出写入的位置。 提交Jaql查询的JAQL_SUBMIT调用的返回字符串参数指定了该位置。
SELECT * FROM TABLE(
HDFS_READ(
JAQL_SUBMIT(
'[[15.3, 16],[170.99,180]]->
write(del(location=''/tmp/test1.csv''));',
'http://hdfssrv.svl.ibm.com:14000/webhdfs/v1/tmp/test1.csv',
'http://jaqlsrv.svl.ibm.com:8080',
'timeout=60 user='biadmin', password=passw0rd'),
'user=biadmin password=passw0rd'))
AS T1(C1 DECIMAL(8,3), C2 INTEGER);