小编kno*_*one的帖子

错误1066:无法打开别名的迭代器 - 猪

刚开始猪; 尝试从文件加载数据并从此转储它.加载似乎是正确的,不会抛出任何错误.以下是查询:

NYSE = LOAD'/root/Desktop/Works/NYSE-2000-2001.tsv'使用PigStorage()AS(交换:chararray,stock_symbol:chararray,日期:chararray,stock_price_open:float,stock_price_high:float,stock_price_low:float,stock_price_close :float,stock_volume:int,stock_price_adj_close:float);

当我尝试执行转储时,它会抛出以下错误:

猪堆跟踪

错误1066:无法为别名打开迭代器NYSE org.apache.pig.impl.logicalLayer.FrontendException:错误1066:无法在org.apache.pig.PigServer.openIterator(PigServer.java:857)处打开别名NYSE的迭代器org.apache.pig.tools.grunt.GruntParser.processDump(GruntParser.java:682)位于org.apache.pig的org.apache.pig.tools.pigscript.parser.PigScriptParser.parse(PigScriptParser.java:303). tools.grunt.GruntParser.parseStopOnError(GruntParser.java:189)位于org.apache.pig.tools.grunt.Grunt.run的org.apache.pig.tools.grunt.GruntParser.parseStopOnError(GruntParser.java:165) Grunt.java:69)org.apache.pig.Main.run(Main.java:490)atg.apache.pig.Main.main(Main.java:111)引起:java.io.IOException:Job在org.apache.pig.PigServer.openIterator(PigServer.java:849)中以异常状态FAILED终止

知道是什么导致了这个问题吗?

apache-pig

8
推荐指数
1
解决办法
3万
查看次数

火花读大文件

这可能是一个愚蠢的问题.我想确保我理解正确.

当你在一个巨大的文件(400GB)中进入一个集群,集合执行器内存只有大约120GB时,Spark似乎永远在读.它不会崩溃,也不会启动第一个地图作业.

我认为发生的事情是,Spark通过大文件作为流读取,并在执行程序内存不足时开始丢弃旧行.当.map代码的执行开始时,这显然可能是一个问题,因为执行程序jvm将再次从头开始读回文件.我想知道,Spark是否以某种方式将数据泄漏到硬盘驱动器上,类似于随机溢出机制.

请注意,我不是指缓存过程.这与使用sc.textFile(filename)的初始读取有关

memory-management apache-spark

7
推荐指数
1
解决办法
1万
查看次数

将参数从shell脚本传递给hive脚本

我有一个问题,可以分为两种方式:我的要求是将参数从shell脚本传递给hive脚本.或者在一个shell脚本中我应该在hive语句中包含变量的值.

我将用两个例子来解释:

1)将参数从shell脚本传递给hiveQL->

My test Hive QL:
select count(*) from demodb.demo_table limit ${hiveconf:num}
Run Code Online (Sandbox Code Playgroud)

我的测试shell脚本:

cnt=1
sh -c 'hive -hiveconf num=$cnt -f countTable.hql'
Run Code Online (Sandbox Code Playgroud)

所以基本上我想在HQL中包含'cnt'的值,在这种情况下不会发生这种情况.我得到的错误是:

FAILED: ParseException line 2:0 mismatched input '<EOF>' expecting Number near 'limit' in limit clause
Run Code Online (Sandbox Code Playgroud)

我确定错误意味着变量的值没有被传递.

2)直接在shell脚本中传递参数 - >

cnt=1
hive -e 'select count(*) from demodb.demo_table limit $cnt'
Run Code Online (Sandbox Code Playgroud)

在上述两种情况下,我都无法传递参数值.有任何想法吗??

PS:我知道查询似乎很荒谬,包括计数中的'限制',但我已经改写了我实际拥有的问题.通过论证的要求仍然完整无缺.

任何想法,任何人?

提前致谢.

bash hadoop hive

3
推荐指数
1
解决办法
2万
查看次数

获取地图中的多列:rdd

我有一个 DF,我将其显式转换为 RDD 并尝试获取每列的记录。无法在地图中获取它们中的每一个。以下是我尝试过的:

val df = sql("Select col1, col2, col3, col4, col5 from tableName").rdd
Run Code Online (Sandbox Code Playgroud)

结果 df 成为以下成员org.apache.spark.rdd.RDD[org.apache.spark.sql.Row]

现在我尝试通过以下方式访问此 RDD 的每个元素:

val dfrdd = df.map{x => x.get(0); x.getAs[String](1); x.get(3)}
Run Code Online (Sandbox Code Playgroud)

问题是,上述语句仅返回 map 最后一次转换中存在的数据,即 上存在的数据x.get(3)。有人可以让我知道我做错了什么吗?

scala apache-spark rdd

3
推荐指数
1
解决办法
6775
查看次数

读取 NiFi 系统属性不适用于 groovy

nifi.properties在系统的文件中定义了一个变量,我试图ExecuteScript使用Groovy. 以下是我尝试过的:

def flowFile = session.get()
if (!flowFile) return

try
{
def newFile = new File(${config.password.file}).getText()

flowFile = session.putAttribute(flowFile, "passwordFile", newFile.toString())
session.transfer(flowFile, REL_SUCCESS)  
}
catch(Exception e)
{
flowFile = session.putAttribute(flowFile, "errorStack",e.toString())
session.transfer(flowFile, REL_FAILURE)
}
Run Code Online (Sandbox Code Playgroud)

的值config.password.file是包含我需要使用的密码的文件的绝对路径。

不确定,但这种方法行不通。这是我得到的错误堆栈:

groovy.lang.MissingPropertyException: No such property: config for class: Script90

我尝试使用常规功能,通过下面的代码从本地计算机上的文件中读取密码,效果很好。

def filex = "C:\\Users\\myUser\\Desktop\\passwordFile.pass"
String passFile = new File(filex).getText()
Run Code Online (Sandbox Code Playgroud)

知道我错过了什么/做错了什么吗?

另外,根据我上面提到的错误堆栈,它没有具体提到缺少什么属性。有谁知道如何自定义代码,因为它会生成错误,确切地说缺少哪个属性或类似的东西?

groovy apache-nifi

0
推荐指数
1
解决办法
1887
查看次数