标签: hdfs

HIVE中的bucketing是如何进行数据分布的?

我创建了一个包含 3 个存储桶的表,并将一些数据加载到其中。

create table testBucket (id int,name String)        
    partitioned by (region String)
    clustered by (id) into 3 buckets;    
Run Code Online (Sandbox Code Playgroud)

我也设置了分桶属性。 $set hive.enforce.bucketing=true;

但是当我在 HDFS 中列出表文件时,我可以看到创建了 3 个文件,正如我提到的 3 个存储桶。但是数据仅加载到一个文件中,其余 2 个文件只是空的。所以我很困惑为什么我的数据被加载到唯一的文件中?

那么有人可以解释一下数据分布在分桶中是如何发生的吗?

[test@localhost user]$ hadoop fs -ls /user/hive/warehouse/database2.db/buckettab/region=USA
Found 3 items
-rw-r--r--   1 user supergroup         38 2016-06-27 08:34 /user/hive/warehouse/database2.db/buckettab/region=USA/000000_0
-rw-r--r--   1 user supergroup          0 2016-06-27 08:34 /user/hive/warehouse/database2.db/buckettab/region=USA/000001_0
-rw-r--r--   1 user supergroup          0 2016-06-27 08:34 /user/hive/warehouse/database2.db/buckettab/region=USA/000002_0
Run Code Online (Sandbox Code Playgroud)

hadoop hive hdfs

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

文件或目录如何存储在 hadoop hdfs 中

我使用以下命令在 hdfs 中创建了一个文件

hdfs dfs -touchz /hadoop/dir1/file1.txt
Run Code Online (Sandbox Code Playgroud)

我可以使用以下命令查看创建的文件

hdfs dfs -ls /hadoop/dir1/
Run Code Online (Sandbox Code Playgroud)

但是,我无法使用 linux 命令(使用 find 或 locate)找到位置本身。我在互联网上搜索并找到了以下链接。 如何访问 Hadoop HDFS 中的文件?. 它说,hdfs 是虚拟存储。在这种情况下,它如何划分哪个或需要使用多少,元数据存储在哪里

是否将我在 hdfs-site.xml 中提到的虚拟存储的 datanode 位置用于存储所有数据?

我查看了 datanode 位置,并且有可用的文件。但是我找不到与我创建的文件或文件夹相关的任何内容。

(我使用的是 hadoop 2.6.0)

hadoop hdfs hadoop2

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

Kafka-Connect-Hdfs - 无法启动 HdfsSinkConnector

我已经从http://docs.confluent.io/2.0.0/quickstart.html#quickstart下载了 kafka 连接

我正在尝试运行 hdfs 连接器。以下是设置:

连接standalone.properties:

bootstrap.servers=lvpi00658.s:9092,lvpi00659.s:9092,lvpi00660.s:9092

key.converter=org.apache.kafka.connect.storage.StringConverter
value.converter=org.apache.kafka.connect.storage.StringConverter

internal.key.converter=org.apache.kafka.connect.storage.StringConverter
internal.value.converter=org.apache.kafka.connect.storage.StringConverter

offset.storage.file.filename=/tmp/connect.offsets
# Flush much faster than normal, which is useful for testing/debugging
offset.flush.interval.ms=10000

key.deserializer=org.apache.kafka.common.serialization.StringDeserializer
 value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
Run Code Online (Sandbox Code Playgroud)

快速入门-hdfs.properties:

name=hdfs-sink
connector.class=io.confluent.connect.hdfs.HdfsSinkConnector
tasks.max=1
topics=eightball-stuff11
hdfs.url=hdfs://localhost:9000
flush.size=3
Run Code Online (Sandbox Code Playgroud)

我像这样运行 hdfs 连接器:
cd /home/fclvappi005561/confluent-3.0.0/bin
./connect-standalone ../etc/kafka-connect-hdfs/connect-standalone.properties ../etc/kafka-connect-hdfs/quickstart-hdfs.properties

但我收到一个错误:

[2016-09-12 17:19:28,039] 信息无法启动 HdfsSinkConnector: (io.confluent.connect.hdfs.HdfsSinkTask:72) org.apache.kafka.connect.errors.ConnectException: org.apache.hadoop。 security.AccessControlException: 权限被拒绝: user=lvpi005561, access=WRITE, inode="/topics":root:supergroup:drwxr-xr-x at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker. java:319) 在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:292) 在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:213)在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:190) 在 org.apache.hadoop.hdfs.server.namenode.FSDirectory。checkPermission(FSDirectory.java:1698) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1682) at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkAncestorAccess(FSDirectory. java:1665) 在 org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.mkdirs(FSDirMkdirOp.java:71) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:3900)在 org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:978) 在 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.javaorg.apache.hadoop) …

hdfs apache-kafka apache-kafka-connect

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

HDFS 与 HBASE:哪一个在数百万个小文本文件上表现更好?

如果我们有数百万个大小从几 KB 到几 MB 不等的小文本文件,那么 HDFS 和 HBASE 中的哪一个需要更少的处理时间?而且内存消耗更少?

performance hadoop hbase hdfs

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

在 Apache Drill 中使用 TO_DATE 将 UNIXTIMESTAMP 转换为人类可读的时间格式

我的 JSON 文件是一个时间戳字段,它采用 UNIX 上传时间戳格式,如1501580484655. 这将转换为格林威治标准时间:01-08-2017 9:41:24.655AM

我尝试将此时间戳转换为人类可读的时间格式,直到毫秒不起作用。

到目前为止,我已经尝试过以下方法:

1- select TO_DATE(1501580484655) from (VALUES(1));

O/P 2017-08-01到目前为止还可以,但我想要到毫秒。

2- select TO_DATE(1501580484655,'yyyy-MM-dd HH:mm:ss.SSS') from (VALUES(1));

O/P 是: Error: SYSTEM ERROR: IllegalArgumentException: Invalid format: "1501580484655" is malformed at "4655"

3- select TO_DATE(1501580484,'yyyy-MM-dd HH:mm:ss.SSS') from (VALUES(1));

O/P 是: Error: SYSTEM ERROR: IllegalArgumentException: Invalid format: "1501580484" is malformed at "4"

4- select TO_DATE(150158048,'yyyy-MM-dd HH:mm:ss.SSS') from (VALUES(1));

O/P 是: Error: SYSTEM ERROR: IllegalArgumentException: Invalid format: "150158048" is too short

5- SELECT TO_TIMESTAMP(1501580484655) …

hdfs hadoop2 apache-drill

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

如何在 Apache Spark 中删除以某个单词开头的多个 hdfs 目录

我使用dstream.saveAsObjectFiles("/temObj")它在 hdfs 中显示多个文件的方法在火花流中保留了对象文件。

temObj-1506338844000
temObj-1506338848000
temObj-1506338852000
temObj-1506338856000
temObj-1506338860000
Run Code Online (Sandbox Code Playgroud)

阅读完所有文件后,我想删除所有 temObj 文件。在火花中做到这一点的最佳方式是什么?我试过

val hdfs = org.apache.hadoop.fs.FileSystem.get(new java.net.URI("hdfs://localhost:9000"), hadoopConf)
hdfs.delete(new org.apache.hadoop.fs.Path(Path), true) 
Run Code Online (Sandbox Code Playgroud)

但它一次只能删除一个文件夹

hadoop scala hdfs apache-spark spark-streaming

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

IllegalArgumentException,从 s3 而不是 hdfs 指定输入/输出时出现错误的 FS

我一直在本地集群上运行我的 Spark 作业,该集群具有从中读取输入和写入输出的 hdfs。现在我已经设置了一个 AWS EMR 和一个 S3 存储桶,我可以在其中输入我的输入,并且我希望我的输出也写入 S3。

错误:

用户类抛出异常:java.lang.IllegalArgumentException:错误 FS:s3://something/input,预期:hdfs://ip-some-numbers.eu-west-1.compute.internal:8020

我尝试搜索相同的问题,并且有几个关于此问题的问题。有人建议它仅用于输出,但即使我禁用输出,也会出现相同的错误。

另一个建议是有问题 FileSystem我的代码有问题。以下是我的程序中出现的所有输入/输出:

第一次发生在我的 customFileInputFormatgetSplits(JobContext job),我实际上并没有修改自己,但我可以:

FileSystem fs = path.getFileSystem(job.getConfiguration());
Run Code Online (Sandbox Code Playgroud)

类似的情况在我的自定义中RecordReader,我自己也没有修改过:

final FileSystem fs = file.getFileSystem(job);
Run Code Online (Sandbox Code Playgroud)

nextKeyValue()RecordReader自己写的习惯中,我使用:

FileSystem fs = FileSystem.get(jc);
Run Code Online (Sandbox Code Playgroud)

最后,当我想检测我使用的文件夹中的文件数时:

val fs = FileSystem.get(sc.hadoopConfiguration)
val status = fs.listStatus(new Path(path))
Run Code Online (Sandbox Code Playgroud)

我认为问题出在我的代码上,但是如何修改FileSystem调用以支持来自 S3 的输入/输出?

filesystems amazon-s3 amazon-web-services hdfs

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

Spark RDD 和 HDFS 数据块的区别

请帮助我理解 HDFS 的数据块和 Spark 中的 RDD 之间的区别。HDFS 将数据集分发到集群中的多个节点,因为具有相同大小的块和数据块将被多次复制并存储。RDD 被创建为并行化集合。Parallelized 集合的元素是跨节点分布还是存储在内存中进行处理?与 HDFS 的数据块有任何关系吗?

hadoop hdfs apache-spark rdd

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

如何为 zeppelin 用户授予正确的权限

当我在 Zeppelin 中针对 AWS 中的 EMR 集群运行一些 PySpark 查询时,出现以下错误:

org.apache.hadoop.security.AccessControlException: Permission denied: user=zeppelin, access=WRITE, inode="/":hdfs:hadoop:drwxr-xr-x
Run Code Online (Sandbox Code Playgroud)

我想我可以给这个用户 (Zeppelin) 写权限,但用户已经在 HDFS (/user/zeppelin) 中有自己的主目录。为什么它试图写入根目录(“/”)。不过,我不太确定我是否正确解释了错误消息。

hdfs amazon-emr apache-zeppelin

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

如何在将数据插入存储桶时合并hive创建的小文件?

我有一个包含呼叫数据记录(CDR)的配置单元表。我在电话号码上对表进行了分区,并在 call_date 上进行了存储。现在,当我将数据插入配置单元时,过时的 call_date 正在我的存储桶中创建小文件,这导致名称节点元数据增加和性能下降。有没有办法将这些小文件合并成一个。

hadoop hive mapreduce bigdata hdfs

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