我正在尝试使用 miniDFSCluster 编写单元测试,但它抛出以下错误
java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.access0(Ljava/lang/String;I)Z
有解决这个问题的建议吗?
我想解压缩 hdfs 中存在的 .zip 文件并将输出存储在 hdfs 中。我尝试了下面的命令hadoop fs -text testData/sample/slarge.zip | hadoop fs -put - testData/sample1/uncompressed-file.txt,但它不能正常工作并且在输出结果中得到垃圾结果。有没有办法在hdfs中解压缩文件?
注意:该文件是 .zip 文件而不是 .gzip 文件。
我是一名中国学生,也是 hadoop 2.7.1 的初学者。如果你能解决我的问题,我将不胜感激。当我最近在伪分布式上运行 hadoop WordCount 示例时,它卡在地图 0% 并减少 0%。
作业的日志是这样的:
……
2017-05-14 16:32:55,939 INFO [main] org.apache.hadoop.yarn.client.api.impl.ContainerManagementProtocolProxy: yarn.client.max-cached-nodemanagers-proxies : 0
2017-05-14 16:32:55,957 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.JobImpl: job_1494750737018_0001Job Transitioned from INITED to SETUP
2017-05-14 16:32:55,960 INFO [CommitterEvent Processor #0] org.apache.hadoop.mapreduce.v2.app.commit.CommitterEventHandler: Processing the event EventType: JOB_SETUP
2017-05-14 16:32:55,988 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.JobImpl: job_1494750737018_0001Job Transitioned from SETUP to RUNNING
2017-05-14 16:32:56,023 INFO [AsyncDispatcher event handler] org.apache.hadoop.yarn.util.RackResolver: Resolved Gil to /default-rack
2017-05-14 16:32:56,034 INFO [AsyncDispatcher event handler] org.apache.hadoop.mapreduce.v2.app.job.impl.TaskImpl: task_1494750737018_0001_m_000000 Task Transitioned from …Run Code Online (Sandbox Code Playgroud) 我正在尝试列出在 Hadoop 集群上运行的应用程序。我可以获取列表以按应用程序状态过滤,如下所示:
>yarn application -list -appStates FINISHED
Run Code Online (Sandbox Code Playgroud)
但这仍然拉起了整个历史(过去 4-5 天,我猜基于 Yarn Timeline 服务器配置)。
有没有办法按特定日期或过去 24 小时之类的内容过滤它?
我的第一次尝试是:
CREATE TABLE t1 (
a string )
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE ;
Run Code Online (Sandbox Code Playgroud)
但这样做的结果是:
CREATE TABLE t1 (
a string )
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' ;
Run Code Online (Sandbox Code Playgroud)
这似乎导致二进制文件而不是文本文件。
我将数据插入 t1:
insert into t1 values ( "hello");
INFO : Loading data to t1
INFO : Table t1 stats: [numFiles=1, numRows=1, totalSize=14, rawDataSize=5]
No rows affected (86.403 seconds)
Run Code Online (Sandbox Code Playgroud)
结果的 hdfs 文件是:
14 2017-10-18 17:20 t1/000000_0.deflate
Run Code Online (Sandbox Code Playgroud)
并且内容是二进制的。我真正需要的是一个文本文件。
那么,是否有可能获得文本格式的 hdfs …
我对这个问题做了很多研究,但没有找到令人满意的答案。我必须重命名来自 spark 的输出文件。
目前我在 S3 中输出我的 spark 数据帧,然后我再次读取它,然后再次重命名和复制。问题是我的 spark 作业需要 16 分钟才能完成,但从 S3 读取然后在 S3 中重新命名和写入又需要 15 分钟。
有什么办法可以重命名我的输出文件..我没问题 part-00000
这就是我保存数据框的方式
dfMainOutputFinalWithoutNull.repartition(50).write.partitionBy("DataPartition", "PartitionYear")
.format("csv")
.option("timestampFormat", "yyyy/MM/dd HH:mm:ss ZZ")
.option("nullValue", "")
.option("delimiter", "\t")
.option("quote", "\u0000")
.option("header", "true")
.option("codec", "bzip2")
.save(outputFileURL)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,任何想法如何使用 hadoop 文件格式?
目前我正在这样做,如下所示
val finalFileName = finalPrefix + DataPartitionName + "." + YearPartition + "." + intFileCounter + "." + fileVersion + currentTime + fileExtention
val dest = new Path(mainFileURL + "/" + finalFileName)
fs.rename(urlStatus.getPath, dest)
Run Code Online (Sandbox Code Playgroud)
问题是我有 50GB 的输出数据,它创建了非常多的文件,重命名这么多文件需要很长时间。
成本明智也很昂贵,因为我的 …
对表格进行快速测试
testfunc() {
hadoop fs -rm /test001.txt
hadoop fs -touchz /test001.txt
hadoop fs -setfattr -n trusted.testfield -v $(date +"%T") /test001.txt
hadoop fs -mv /test001.txt /tmp/.
hadoop fs -getfattr -d /tmp/test001.txt
}
testfunc()
testfunc()
Run Code Online (Sandbox Code Playgroud)
导致输出
... during second function call
mv: '/tmp/test001.txt': File exists
# file: /tmp/test001.txt
trusted.testfield="<old timestamp from first call>"
...
Run Code Online (Sandbox Code Playgroud)
似乎(与在 linux 中不同)该hadoop fs mv命令不会覆盖目标文件(如果已存在)。有没有办法强制覆盖行为(我想我每次都可以检查和删除目的地,但hadoop mv -overwrite <source> <dest>对于我的目的来说更方便)?
** 顺便说一句,如果我对结果的解释不正确,或者行为似乎不正确,请告诉我(因为我认为覆盖是默认行为,我正在写这个问题,因为我很惊讶它似乎不是) .
INPUT:
输入数据集包含多个文件中的 1000 万笔交易,以镶木地板形式存储。包括所有文件在内的整个数据集的大小范围为 6 到 8GB。
问题陈述:
根据客户 ID 对交易进行分区,这将为每个客户 ID 创建一个文件夹,每个文件夹包含该特定客户完成的所有交易。
HDFS 对根目录中可以创建的子目录数量有 640 万个硬性限制,因此使用客户 ID 的最后两位数字(范围从 00、01、02...到 99)来创建顶级目录和每个顶级目录将包含所有以该特定两位数字结尾的客户 ID。
示例输出目录结构:
00/cust_id=100900/part1.csv
00/cust_id=100800/part33.csv
01/cust_id=100801/part1.csv
03/cust_id=100803/part1.csv
代码:
// Reading input file and storing in cache
val parquetReader = sparksession.read
.parquet("/inputs")
.persist(StorageLevel.MEMORY_ONLY) //No spill will occur has enough memory
// Logic to partition
var customerIdEndingPattern = 0
while (cardAccountEndingPattern < 100) {
var idEndPattern = customerIdEndingPattern + ""
if (customerIdEndingPattern < 10) {
idEndPattern = "0" + customerIdEndingPattern
}
parquetReader …Run Code Online (Sandbox Code Playgroud) partitioning hadoop-partitioning apache-spark hadoop2 apache-spark-sql
我想使用 Spark 2.4.5(当前稳定的 Spark 版本)和 Hadoop 2.10(当前稳定的 Hadoop 2.x 系列版本)。此外,我需要访问 HDFS、Hive、S3 和 Kafka。
http://spark.apache.org提供 Spark 2.4.5 预构建并与 Hadoop 2.6 或 Hadoop 2.7 捆绑在一起。另一种选择是将 Spark与用户提供的 Hadoop 一起使用,所以我尝试了那个。
由于与用户提供的 Hadoop 一起使用,Spark 也不包含 Hive 库。会有一个错误,就像这里:如何创建带有 Hive 支持的 SparkSession(因“找不到 Hive 类”而失败)?
当我通过使用将spark-hive依赖项添加到spark-shell(spark-submit也受到影响)
spark.jars.packages=org.apache.spark:spark-hive_2.11:2.4.5
Run Code Online (Sandbox Code Playgroud)
在spark-defaults.conf 中,我收到此错误:
20/02/26 11:20:45 ERROR spark.SparkContext:
Failed to add file:/root/.ivy2/jars/org.apache.avro_avro-mapred-1.8.2.jar to Spark environment
java.io.FileNotFoundException: Jar /root/.ivy2/jars/org.apache.avro_avro-mapred-1.8.2.jar not found
at org.apache.spark.SparkContext.addJarFile$1(SparkContext.scala:1838)
at org.apache.spark.SparkContext.addJar(SparkContext.scala:1868)
at org.apache.spark.SparkContext.$anonfun$new$11(SparkContext.scala:458)
at org.apache.spark.SparkContext.$anonfun$new$11$adapted(SparkContext.scala:458)
at …Run Code Online (Sandbox Code Playgroud) 我有一个非常基本的问题!我在HBase上使用MapReduce需要哪些库?我知道我必须使用TableMapper并且我从maven获得了hadoop-client 2.2.0和hbase-client 0.98.2但是API中没有TableMapper.谢谢.
hadoop2 ×10
hadoop ×4
apache-spark ×3
hive ×3
hadoop-yarn ×2
hdfs ×2
mapreduce ×2
bigdata ×1
hbase ×1
hiveql ×1
maven ×1
partitioning ×1
scala ×1
unix ×1