在 method/function 个参数中创建动态对象
Dynamic object creation in method/function arguments
我正在使用以下方法生成 orc 文件
import org.apache.hadoop.io.Text;
import org.apache.hadoop.hive.ql.io.orc._;
val orcLine:OrcStruct = OrcUtils.createOrcStruct(
typeInfo,
new Text(value1),
new Text(value2),
new Text(value3),
new Text(value4),
new Text(value5));
但是,这里的挑战是有时我可能有 5 个值 (value1 ... value5),有时有 10 个 (value1 ... value10),有时有 20 个 (value1 ... value20),具体取决于某些条件。
我怎样才能在这里带来这种动态行为?
如果值为 10 我应该
val orcLine:OrcStruct = OrcUtils.createOrcStruct(
typeInfo,
new Text(value1),
new Text(value2),
new Text(value3),
new Text(value4),
new Text(value5),
new Text(value6),
new Text(value7),
new Text(value8),
new Text(value9),
new Text(value10));
我有时也有
val orcLine:OrcStruct = OrcUtils.createOrcStruct(
typeInfo,
new Text(value1),
new ShortWritable(Short.valueOf(value2)),
new LongWritable(Long.valueOf(value3)),
new DoubleWritable(Double.valueOf(value4)),
new FloatWritable(Float.valueOf(value5)));
我目前使用的是 Scala 2.11 版。
非常感谢任何帮助!
假设您的参数存储在列表中:
val params = List(
new Text(value1),
new ShortWritable(Short.valueOf(value2)),
new LongWritable(Long.valueOf(value3)),
new DoubleWritable(Double.valueOf(value4)),
new FloatWritable(Float.valueOf(value5)))
)
您可能已经注意到OrcUtils.createOrcStruct将对象的可变列表作为第二个参数。
为了在 Scala 中将列表作为可变参数传递,您需要使用 :_*
。它会 "spread" 你的列表在方法调用期间作为可变参数:
OrcUtils.createOrcStruct(typeInfo, params:_*)
我正在使用以下方法生成 orc 文件
import org.apache.hadoop.io.Text;
import org.apache.hadoop.hive.ql.io.orc._;
val orcLine:OrcStruct = OrcUtils.createOrcStruct(
typeInfo,
new Text(value1),
new Text(value2),
new Text(value3),
new Text(value4),
new Text(value5));
但是,这里的挑战是有时我可能有 5 个值 (value1 ... value5),有时有 10 个 (value1 ... value10),有时有 20 个 (value1 ... value20),具体取决于某些条件。
我怎样才能在这里带来这种动态行为?
如果值为 10 我应该
val orcLine:OrcStruct = OrcUtils.createOrcStruct(
typeInfo,
new Text(value1),
new Text(value2),
new Text(value3),
new Text(value4),
new Text(value5),
new Text(value6),
new Text(value7),
new Text(value8),
new Text(value9),
new Text(value10));
我有时也有
val orcLine:OrcStruct = OrcUtils.createOrcStruct(
typeInfo,
new Text(value1),
new ShortWritable(Short.valueOf(value2)),
new LongWritable(Long.valueOf(value3)),
new DoubleWritable(Double.valueOf(value4)),
new FloatWritable(Float.valueOf(value5)));
我目前使用的是 Scala 2.11 版。
非常感谢任何帮助!
假设您的参数存储在列表中:
val params = List(
new Text(value1),
new ShortWritable(Short.valueOf(value2)),
new LongWritable(Long.valueOf(value3)),
new DoubleWritable(Double.valueOf(value4)),
new FloatWritable(Float.valueOf(value5)))
)
您可能已经注意到OrcUtils.createOrcStruct将对象的可变列表作为第二个参数。
为了在 Scala 中将列表作为可变参数传递,您需要使用 :_*
。它会 "spread" 你的列表在方法调用期间作为可变参数:
OrcUtils.createOrcStruct(typeInfo, params:_*)