我正在使用HDFS在集群上使用Apache Spark.据我了解,HDFS正在数据节点上分发文件.因此,如果在文件系统上放置"file.txt",它将被拆分为分区.现在我在打电话
rdd = SparkContext().textFile("hdfs://.../file.txt")
Run Code Online (Sandbox Code Playgroud)
来自Apache Spark.rdd现在自动与文件系统上的"file.txt"分区相同吗?我打电话时会发生什么
rdd.repartition(x)
Run Code Online (Sandbox Code Playgroud)
其中x>那么hdfs使用的分区?Spark会在物理上重新排列hdfs上的数据以在本地工作吗?
示例:我在HDFS系统上放置了一个30GB的文本文件,它将它分发到10个节点上.Will Spark a)使用相同的10个分区吗?和b)当我调用重新分区(1000)时,在群集中洗牌30GB?
我正在尝试将CSV文件加载到Hive表中,如下所示:
CREATE TABLE mytable
(
num1 INT,
text1 STRING,
num2 INT,
text2 STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";
LOAD DATA LOCAL INPATH '/data.csv'
OVERWRITE INTO TABLE mytable;
Run Code Online (Sandbox Code Playgroud)
csv由逗号(,)分隔,如下所示:
1, "some text, with comma in it", 123, "more text"
Run Code Online (Sandbox Code Playgroud)
这将返回损坏的数据,因为第一个字符串中有一个','.
有没有办法设置文本分隔符或让Hive忽略字符串中的','?
我无法更改csv的分隔符,因为它是从外部源中提取的.
HDFS/hadoop的默认数据块大小为64MB.磁盘中的块大小通常为4KB.64MB块大小是什么意思? - >这是否意味着从磁盘读取的最小单位是64MB?
如果是,那么这样做有什么好处? - >在HDFS中连续访问大文件很容易吗?
我们可以通过在磁盘中使用原始的4KB块大小来做同样的事情吗?
我在Windows 7上运行Spark.当我使用Hive时,我看到以下错误
The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rw-rw-rw-
Run Code Online (Sandbox Code Playgroud)
权限设置如下
C:\tmp>ls -la
total 20
drwxr-xr-x 1 ADMIN Administ 0 Dec 10 13:06 .
drwxr-xr-x 1 ADMIN Administ 28672 Dec 10 09:53 ..
drwxr-xr-x 2 ADMIN Administ 0 Dec 10 12:22 hive
Run Code Online (Sandbox Code Playgroud)
我已经从Windows-> properties-> security-> Advanced为所有用户设置了"完全控制".
但我仍然看到同样的错误.有什么帮助吗?我查了一堆链接,有人说这是Spark 1.5上的一个错误.这是真的?
谢谢Aarthi
我是hadoop分布式文件系统的新手,我已经在我的机器上完成了hadoop单节点的安装.但是之后当我要将数据上传到hdfs时,它会给出一条错误消息Permission Denied.
来自终端的消息带命令:
hduser@ubuntu:/usr/local/hadoop$ hadoop fs -put /usr/local/input-data/ /input
put: /usr/local/input-data (Permission denied)
hduser@ubuntu:/usr/local/hadoop$
Run Code Online (Sandbox Code Playgroud)
使用sudo并在sudouser中添加hduser后:
hduser@ubuntu:/usr/local/hadoop$ sudo bin/hadoop fs -put /usr/local/input-data/ /inwe
put: org.apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="":hduser:supergroup:rwxr-xr-x
hduser@ubuntu:/usr/local/hadoop$
Run Code Online (Sandbox Code Playgroud) 当我设置hadoop集群时,我读取了在50070上运行的namenode并且我进行了相应的设置并且运行正常.
但在一些书中,我遇到了名称节点地址:
hdfs://localhost:9000/
Run Code Online (Sandbox Code Playgroud)
要么
hdfs://localhost:8020
Run Code Online (Sandbox Code Playgroud)
设置namenode端口的正确数字究竟是什么?
我有一个巨大的HDFS文件,有时间序列数据点(雅虎股票价格).
我想找到时间序列的移动平均值我如何编写Apache Spark工作来做到这一点.
我试图了解如何在YARN群集/客户端上运行spark.我脑子里有以下问题.
是否有必要在纱线群中的所有节点上安装火花?我认为它应该是因为集群中的工作节点执行任务并且应该能够解码驱动程序发送到集群的spark应用程序中的代码(spark API)?
它在文档中说"确保HADOOP_CONF_DIR或YARN_CONF_DIR指向包含Hadoop集群的(客户端)配置文件的目录".为什么客户端节点在将作业发送到集群时必须安装Hadoop?
我正在使用具有单节点集群的默认配置运行hadoop,并希望找到HDFS在本地存储文件的位置.
有任何想法吗?
谢谢.
我在HDFS上有一个目录目录,我想迭代这些目录.使用SparkContext对象有没有简单的方法来使用Spark?
hdfs ×10
hadoop ×7
apache-spark ×4
block ×1
database ×1
delimiter ×1
hadoop-yarn ×1
hbase ×1
hive ×1
mapreduce ×1
permissions ×1
security ×1
shell ×1
time-series ×1
windows ×1