编写gpfdist配置
gpfdist配置是一个YAML 1.1文档。它指定在装载或者抽取数据时gpfdist用来选择一种转换并应用的规则。
这个gpfdist配置的例子包含下列项:
- 定义
TRANSFORMATIONS
的config.yaml
文件 config.yaml
文件中引用的input_transform.sh
包装器脚本input_transform.sh
中调用的joost转换input_transform.stx
除普通的YAML规则(如文档用三个破折号开始(---
))之外,gpfdist配置必须符合下列限制:
VERSION
设置必须出现并且值为1.0.0.1
。TRANSFORMATIONS
设置必须出现并且包含一个或者更多个映射。TRANSFORMATION
中的每一个映射必须包含:- 一个值为'input'或者'output'的
TYPE
- 一个表明转换如何运行的
COMMAND
。
- 一个值为'input'或者'output'的
TRANSFORMATION
中的每一个映射可以包含可选的CONTENT
、SAFE
以及STDERR
设置。
下面这个称为config.YAML
的gpfdist配置适用于prices的例子。每一行开始的缩进是有意义的,它们反映了该说明的层级性。下面例子中的名称prices_input
将在后面用SQL创建该表时引用。
---
VERSION: 1.0.0.1
TRANSFORMATIONS:
prices_input:
TYPE: input
COMMAND: /bin/bash input_transform.sh %filename%
COMMAND
设置使用了一个名为input_transform.sh
的包装器脚本,它带有一个%filename%
占位符。当gpfdist运行该prices_input
转换时,它用/bin/bash
调用input_transform.sh
,并且将%filename%
占位符替换为要转换的输入文件的路径。名为input_transform.sh
的包装器脚本包含调用STX转换并返回其输出的逻辑。
如果使用了Joost,则必须安装Joost STX引擎。
#!/bin/bash
# input_transform.sh - sample input transformation,
# demonstrating use of Java and Joost STX to convert XML into
# text to load into Greenplum Database.
# java arguments:
# -jar joost.jar joost STX engine
# -nodecl don't generate a <?xml?> declaration
# $1 filename to process
# input_transform.stx the STX transformation
#
# the AWK step eliminates a blank line joost emits at the end
java \
-jar joost.jar \
-nodecl \
$1 \
input_transform.stx \
| awk 'NF>0
input_transform.sh
文件使用带有AWK解释器的Joost STX引擎。下面的图表展示了gpfdist运行该转换的处理流程。
上级主题: 转换XML数据