标签: cloudera

即使查询中存在分区谓词,也找不到Alias的分区谓词

我在hdfs中有一个表pos.pos_inv,由yyyymm分区.以下是查询:

select DATE_ADD(to_date(from_unixtime(unix_timestamp(Inv.actvydt, 'MM/dd/yyyy'))),5), 
       to_date(from_unixtime(unix_timestamp(Inv.actvydt, 'MM/dd/yyyy'))),yyyymm 
   from pos.pos_inv inv 
      INNER JOIN pos.POSActvyBrdg Brdg ON Brdg.EIS_POSActvyBrdgId = Inv.EIS_POSActvyBrdgId 
      where to_date(from_unixtime(unix_timestamp(Inv.nrmlzdwkenddt, 'MM/dd/yyyy'))) 
       BETWEEN DATE_SUB(to_date(from_unixtime(unix_timestamp(Inv.actvydt, 'MM/dd/yyyy'))),6) 
        and DATE_ADD(to_date(from_unixtime(unix_timestamp(Inv.actvydt, 'MM/dd/yyyy'))),6) 
        and inv.yyyymm=201501
Run Code Online (Sandbox Code Playgroud)

我已将查询的分区值提供为201501,但仍然出现错误"

 Error while compiling statement: FAILED: SemanticException [Error 10041]: No partition predicate found for Alias "inv" Table "pos_inv"
Run Code Online (Sandbox Code Playgroud)

(schema)分区,yyyymm是int类型,actvydt是日期存储为字符串类型.

hadoop hive cloudera hue hiveql

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

HIVE 中的 TIMESTAMP 格式问题

我有从 JSON 文件创建的 Hive 表。

CREATE external TABLE logan_test.t1 (
   name string,
   start_time timestamp
   )
ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
WITH SERDEPROPERTIES (
  "timestamp.formats" = "yyyy-MM-dd'T'HH:mm:ss.SSSSSS"
)
LOCATION 's3://t1/';
Run Code Online (Sandbox Code Playgroud)

我的时间戳数据的格式为yyyy-MM-dd'T'HH:mm:ss.SSSSSS.

我为页面中给出的时间戳格式指定了 SERDEPROPERTIES。 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-TimestampstimestampTimestamps

创建语句成功执行但select *失败并出现以下错误。

HIVE_BAD_DATA:解析字段 1 的字段值 '2017-06-01T17:51:15.180400' 时出错:时间戳格式必须为 yyyy-mm-dd hh:mm:ss[.ffffffffff]

hadoop hive create-table cloudera hiveql

9
推荐指数
1
解决办法
3078
查看次数

如何解决'文件只能在hadoop中复制到0个节点,而不是1'?

我有一个简单的hadoop工作,它抓取网站并将它们缓存到HDFS.映射器检查HDFS中是否已存在URL,如果存在,则使用它,否则下载页面并将其保存到HDFS.

如果在下载页面时遇到网络错误(404等),则会完全跳过URL - 不会写入HDFS.每当我运行一个小的列表~1000个网站时,我似乎总是遇到这个错误,它在我的伪分布式安装中反复崩溃了.可能是什么问题呢?

我正在运行Hadoop 0.20.2-cdh3u3.

org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/raj/cache/9b4edc6adab6f81d5bbb84fdabb82ac0 could only be replicated to 0 nodes, instead of 1
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1520)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:665)
    at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:557)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1434)
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1430)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:416)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1157)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1428)
Run Code Online (Sandbox Code Playgroud)

hadoop cloudera

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

sqoop库目录在哪里?

要在Sqoop中安装MySQL连接器,我需要将jar文件放在Sqoop目录中,但我找不到它(它不在/usr/lib/sqoop).我在多台机器上安装了Cloudera的Sqoop.

我在哪里可以找到其中一台机器上的Sqoop目录?

hadoop cloudera sqoop

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

在core-site.xml中设置fs.default.name将HDFS设置为Safemode

我安装在伪分布式模式在一台机器上的Cloudera CDH4分布及测试成功,它正在正常工作(例如,可以运行MapReduce程序,蜂房服务器上插入数据等),但是,如果我机会core-site.xml文件已经fs.default.name设置为了加工名称而不是localhost重新启动NameNode服务,HDFS进入安全模式.

在更改之前fs.default.name,我运行以下命令来检查HDFS的状态:

$ hadoop dfsadmin -report
...
Configured Capacity: 18503614464 (17.23 GB)
Present Capacity: 13794557952 (12.85 GB)
DFS Remaining: 13790785536 (12.84 GB)
DFS Used: 3772416 (3.60 MB)
DFS Used%: 0.03%
Under replicated blocks: 2
Blocks with corrupt replicas: 0
Missing blocks: 0
Run Code Online (Sandbox Code Playgroud)

然后我做了修改core-site.xml(机器名称为hadoop):

<property>
  <name>fs.default.name</name>
  <value>hdfs://hadoop:8020</value>
</property>
Run Code Online (Sandbox Code Playgroud)

我重新启动了该服务并重新报告了该报告.

$ sudo service hadoop-hdfs-namenode restart
$ hadoop dfsadmin -report
...
Safe mode is ON
Configured Capacity: 0 (0 B) …
Run Code Online (Sandbox Code Playgroud)

hadoop hdfs cloudera

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

Hadoop:提供目录作为MapReduce作业的输入

我正在使用Cloudera Hadoop.我能够运行简单的mapreduce程序,我提供了一个文件作为MapReduce程序的输入.

此文件包含mapper函数要处理的所有其他文件.

但是,我陷入了困境.

/folder1
  - file1.txt
  - file2.txt
  - file3.txt
Run Code Online (Sandbox Code Playgroud)

如何指定MapReduce程序的输入路径"/folder1",以便它可以开始处理该目录中的每个文件?

有任何想法吗 ?

编辑:

1)Intiailly,我提供了inputFile.txt作为mapreduce程序的输入.它工作得很好.

>inputFile.txt
file1.txt
file2.txt
file3.txt
Run Code Online (Sandbox Code Playgroud)

2)但是现在,我想在命令行上提供一个输入目录作为arg [0],而不是给出一个输入文件.

hadoop jar ABC.jar /folder1 /output
Run Code Online (Sandbox Code Playgroud)

java hadoop mapreduce input cloudera

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

虚拟机"Cloudera快速启动"无法启动

我最近在http://www.cloudera.com上下载了"QuickStart VM" (确切地说,是虚拟机的版本)这个虚拟机使用centOS(我的电脑是macbook air)我无法完全启动这个虚拟机(和我不知道为什么)我附上了最先进的启动状态的屏幕截图 最先进的启动状态,我可以等很长时间没什么变化

virtualbox centos cloudera cloudera-quickstart-vm

8
推荐指数
2
解决办法
4923
查看次数

具有Docker的多节点Hadoop集群

我正在计划基于环境的多节点Hadoop集群的阶段Docker.所以它应该基于轻量级易用的虚拟化系统.当前架构(关于文档)包含1个主节点和3个从节点.该主机使用HDFS文件系统和KVM虚拟化.整个云由管理Cloudera Manager.此群集上安装了多个Hadoop模块.还有一个NodeJS数据上传服务.这次我应该以架构为Docker基础.我已阅读了几篇教程并提出了一些意见,但也提出了一些问题.

A.您怎么看?https://github.com/Lewuathe/docker-hadoop-cluster是我项目的良好基础吗?我发现了一个官方图片,但它是单节点的.

B.如果我想在单个容器中进行此操作,系统要求将如何变化?这将是很好的,因为这种架构应该在不同的位置工作,因此可以在这些位置之间轻松传输更改.这些所谓的克隆之间的同步将是重要的.

C.你有其他想法,也许是最佳做法?

hadoop cluster-computing hdfs cloudera docker

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

Cloudera 5.6:Parquet不支持日期.见HIVE-6384

我目前正在使用Cloudera 5.6尝试基于另一个表在hive表中创建一个镶木地板格式表,但我遇到了一个错误.

create table sfdc_opportunities_sandbox_parquet like 
sfdc_opportunities_sandbox STORED AS PARQUET
Run Code Online (Sandbox Code Playgroud)

错误信息

Parquet does not support date. See HIVE-6384
Run Code Online (Sandbox Code Playgroud)

我读到hive 1.2有一个解决这个问题的方法,但是Cloudera 5.6和5.7并没有配备hive 1.2.有没有人找到解决这个问题的方法?

hive cloudera parquet

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

Livy Server:将数据帧作为JSON返回?

我正在使用HTTP POST调用在Livy Server中执行语句localhost:8998/sessions/0/statements,具有以下正文

{
  "code": "spark.sql(\"select * from test_table limit 10\")"
}
Run Code Online (Sandbox Code Playgroud)

我想以下列格式给出答案

(...)
"data": {
  "application/json": "[
    {"id": "123", "init_date": 1481649345, ...},
    {"id": "133", "init_date": 1481649333, ...},
    {"id": "155", "init_date": 1481642153, ...},
  ]"
}
(...)
Run Code Online (Sandbox Code Playgroud)

但我得到的是

(...)
"data": {
  "text/plain": "res0: org.apache.spark.sql.DataFrame = [id: string, init_date: timestamp ... 64 more fields]"
}
(...)
Run Code Online (Sandbox Code Playgroud)

哪个是toString()数据帧的版本.

有没有办法使用Livy Server将数据帧作为JSON返回?

编辑

找到解决问题的JIRA问题:https://issues.cloudera.org/browse/LIVY-72

根据评论,可以说Livy不会也不会支持这样的功能?

json cloudera apache-spark apache-spark-2.0 livy

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