当前位置: 首页 > 面试题库 >

Pig:JSON加载程序的结果为空

葛高澹
2023-03-14
问题内容

我正在使用cdh5 quickstart vm,并且我有一个像这样的文件(此处不完整):

{"user_id": "kim95",
 "type": "Book",
 "title": "Modern Database Systems: The Object Model, Interoperability, and
Beyond.",
 "year": "1995",
 "publisher": "ACM Press and Addison-Wesley",
 "authors": {},
 "source": "DBLP"
}
{"user_id": "marshallo79",
 "type": "Book",
 "title": "Inequalities: Theory of Majorization and Its Application.",
 "year": "1979",
 "publisher": "Academic Press",
 "authors": {("Albert W. Marshall"), ("Ingram Olkin")},
 "source": "DBLP"
}

我使用了这个脚本:

books = load 'data/book-seded.json'
        using JsonLoader('t1:tuple(user_id:
chararray,type:chararray,title:chararray,year:chararray,publisher:chararray,source:chararray,authors:bag{T:tuple(author:chararray)})');

STORE books INTO 'book-no-seded.tsv';

该脚本有效,但是生成的文件为空,您有什么想法吗?


问题答案:

最后,只有此模式有效:如果我添加或删除与该配置不同的空格,那么我将出现错误(我还为元组添加了“名称”,并在其为空时指定了“
null”,并更改了作者之间的顺序和来源,但即使没有这种配置,它仍然是错误的)

{"user_id": "kim95", "type": "Book","title": "Modern Database Systems: The Object Model, Interoperability, and Beyond.", "year": "1995", "publisher": "ACM Press and Addison-Wesley", "authors": [{"name":null"}], "source": "DBLP"}
{"user_id": "marshallo79", "type": "Book", "title": "Inequalities: Theory of Majorization and Its Application.", "year": "1979", "publisher": "Academic Press", "authors": [{"name":"Albert W. Marshall"},{"name":"Ingram Olkin"}], "source": "DBLP"}

工作脚本是这个:

books = load 'data/book-seded-workings-reduced.json'
        using JsonLoader('user_id:chararray,type:chararray,title:chararray,year:chararray,publisher:chararray,authors:{(name:chararray)},source:chararray');

STORE books INTO 'book-table.csv';  //whether .tsv or .csv


 类似资料:
  • WebView可以很好地处理http请求和https(其中知名的可信站点如https://www.online.citibank.co.in/),但我试图使用第三方颁发的CA访问私有站点,它显示的是空白屏幕。证书通过SD卡安装到电话上,并列在受信任的证书列表下。 当我在将证书添加到TrustManager后使用HttpsURLConnection尝试相同的URL时,它工作得很好(能够获取内容)。

  • 我试图覆盖JAX-WS web服务的Apache CXF实现。根据JAX-WS=当安装Apache CXF时,它“窃取”默认的JDK JAX-WS实现,如何解决?,我正在尝试创建/覆盖提供程序实现。 有了这个配置,我们就有了javax。xml。ws。spi。至少在两个JAR中提供程序:/tomcat/lib/cxf rt frontend jaxws-*。jar和我们自己的jar/tomcat/w

  • 问题内容: 我是Java的新手,所以我编写了这段代码,以便将这整个五年都称为布尔值,并为所有布尔值生成答案。但是,它仅调用最后一个。我该怎么做呢? 问题答案: 您每年需要使用单独的对象,或者至少在创建该年份的对象后立即调用the年检查方法。 您所拥有的是对函数的一系列调用,该函数将值分配给同一对象的属性。因此,只有最后一条语句才起作用,因为先前的值将被覆盖。 另外请注意,您的代码似乎没有正确组织。

  • 我正在尝试将自定义c dll(使用jni)加载到java,但我有一个问题:我的dll使用cryptopp库,当java尝试加载依赖(包括cryptopp)时,应用程序会退出并显示消息: Java结果:-1073741571 那是什么,我可以在不移除密码的情况下修复它吗? 更新: 如果我对文件zCypto发表评论。h和zCypro。cpp,并删除了cryptopp库的所有用法,它工作时没有任何错误,

  • 问题内容: 有人告诉我,加载JDBC驱动程序的首选方法是: 我知道,这对于从XML配置文件或用户输入中读取多个驱动程序之间的动态决策更好。我很好奇的是,调用此语句如何将指定的驱动程序加载到我们什至没有将生成的“ Class”对象存储在任何地方的环境中。JavaDocs条目说: 返回与具有给定字符串名称的类或接口关联的Class对象 在那种情况下,Java开发人员仅凭此语句如何设法促进驱动程序对象的