我正在尝试使用^ A作为我的reduce输出文件中Key和Value之间的分隔符.我发现配置设置"mapred.textoutputformat.separator"是我想要的,这正确地将分隔符切换为",":
conf.set("mapred.textoutputformat.separator", ",");
Run Code Online (Sandbox Code Playgroud)
但它无法处理^ A字符:
conf.set("mapred.textoutputformat.separator", "\u0001");
Run Code Online (Sandbox Code Playgroud)
抛出此错误:
ERROR security.UserGroupInformation: PriviledgedActionException as:user (auth:SIMPLE) cause:org.apache.hadoop.ipc.RemoteException: java.io.IOException: java.lang.RuntimeException: org.xml.sax.SAXParseException; lineNumber: 68; columnNumber: 94; Character reference "&#
我找到了这张票https://issues.apache.org/jira/browse/HADOOP-7542并看到他们试图修复此问题,但由于XML1.1问题而恢复了补丁.
所以我想知道是否有人成功地将分隔符设置为^ A(看起来很常见),使用简单的解决方法.或者,如果我应该解决并使用标签分隔符.
谢谢!
我在CentOS 6.2上运行Hadoop 0.20.2-cdh3u5
我正在尝试使用MRunit来测试我的sortComparatorClass.似乎MRunit应该能够使用该setKeyOrderComparator方法执行此操作,但是当我运行mapReduceDriver它时,它不会调用类的compare()方法SortComparator.
很确定我在使用MRunit API做错了.
这是我的单元测试代码:
public class UnitTests {
private static transient Log log = LogFactory.getLog(UnitTests.class);
MapReduceDriver<Text, Text, Text, Text, Text, Text> mapReduceDriver;
MapDriver<Text, Text, Text, Text> mapDriver;
ReduceDriver<Text, Text, Text, Text> reduceDriver;
@Before
public void setUp() throws InterruptedException, IOException {
mapDriver = new MapDriver<Text, Text, Text, Text>();
mapDriver.setMapper(new TestMapper());
reduceDriver = new ReduceDriver<Text, Text, Text, Text>();
reduceDriver.setReducer(new TestReducer());
mapReduceDriver = new MapReduceDriver(new TestMapper(), new TestReducer());
mapReduceDriver.setKeyOrderComparator(new TestSortCompartor());
}
@Test
public …Run Code Online (Sandbox Code Playgroud) 我对MySQL有一个奇怪的问题,我无法创建一个表.该表曾经存在,它是每天加载到临时表的作业的一部分,然后在最后截断该表.几个月之后,桌子消失了(也许有人放弃它,没关系)我去重建它但是我得到了这个错误:
Level Code Message
Error 1005 Can't create table 'apps.raw_appsites_stage' (errno: -1)
Run Code Online (Sandbox Code Playgroud)
我不能放弃桌子或重建它.但如果改变表名,我可以构建它.
因此,似乎表格已被删除,但命名空间仍然保留或滞后于后端.
这是不起作用的ddl:
create table raw_appsites_stage(t int);
Run Code Online (Sandbox Code Playgroud)
但是这个ddl确实有效:
create table raw_appsites_stage_1(t int);
Run Code Online (Sandbox Code Playgroud)
我正在使用RDS实例,所以我没有太多访问服务器本身.这是版本信息:
Variable_name Value
innodb_version 5.5.40
protocol_version 10
slave_type_conversions
version 5.5.40-log
version_comment Source distribution
version_compile_machine x86_64
version_compile_os Linux
Run Code Online (Sandbox Code Playgroud)
如何查看此名称的位置以及为什么它不会让我删除或创建具有此名称的表?
更新 我尝试在该表上重命名并得到一个我从未见过的新错误:
Can't find file: './apps/raw_appsites_stage.frm' (errno: 2)
Run Code Online (Sandbox Code Playgroud)
所以它在后端肯定是一个时髦的东西,但是这个和RDS实例我无法访问机器操作系统.有人知道解决这个问题吗?我需要等待AWS支持吗?
谢谢