我正在尝试搜索和替换文件中的一些文本。创建一个新文件或覆盖现有文件都可以。
如果我用
sed -i 's/<texttoreplace>/<newtext>/g' foo.txt
Run Code Online (Sandbox Code Playgroud)
我最终得到两个文件:
foo.txt是修改后的文件 foo.txte是原始的如果我用
sed -i 's/<texttoreplace>/<newtext>/g' foo.txt > bar.txt
Run Code Online (Sandbox Code Playgroud)
我最终得到2个文件:
foo.txt是原始的未修改文件。 bar.txt为0个字节。我究竟做错了什么?我真的更喜欢只覆盖原始文件,这似乎应该是可以的。
我们的提取过程遇到问题,这会导致将分区添加到Hive中的表中,但是HDFS中的路径实际上并不存在。我们已经解决了该问题,但是仍然存在这些错误的分区。使用Tez查询这些表时,我们得到FileNotFound异常,指向HDFS中不存在的位置。如果我们使用MR而不是Tez,则查询有效(这对我来说很混乱),但是它太慢了。
有没有办法列出所有具有此探针的分区? MSCK REPAIR似乎可以解决相反的问题,即HDFS中存在数据,但Hive中没有分区。
编辑:更多信息。这是找不到文件异常的输出:
java.io.FileNotFoundException: File hdfs://<server>/db/tables/2016/03/14/mytable does not exist.
如果运行show partitions <db.mytable>,我将获得所有分区,包括的一个分区dt=2016-03-14。
show table extended like '<db.mytable>' partition(dt='2016-03-14'返回相同的位置:
location:hdfs://server/db/tables/2016/03/14/mytable。
我正在对文本文件进行一些简单的解析(可能会达到1GB的范围)。我将如何跳过前N行,更重要的是,跳过最后(不同的)N行?我确定我可以打开文件并计算行数,并使用$ _ <total_row_count -N来执行某些操作,但这似乎效率很低。我差不多是个perl newb,顺便说一句。
我试图递归地遍历给定的目录及其所有子目录,并列出以 .json 结尾的所有文件。感谢这个答案,我已经得到了递归位的工作。现在我正在尝试找出过滤部分。
这是我当前的尝试:
import org.apache.hadoop.fs.{FileSystem,Path, PathFilter}
import org.apache.hadoop.fs.Path;
val fs = FileSystem.get(spark.sparkContext.hadoopConfiguration)
def listJsonFiles(hdfsPath: String): List[String] = {
fs
.listStatus(new Path(hdfsPath)).filter(_.getPath.getName.endsWith(".json"))
//.listStatus(new Path(hdfsPath))
.flatMap { obj =>
if (obj.isFile)
List(hdfsPath + "/" + obj.getPath.getName)
// If it's a dir and we're in a recursive option:
else
listJsonFiles(hdfsPath + "/" + obj.getPath.getName)
}
.toList
}
val files = listJsonFiles("/path/to/some/stuff")
Run Code Online (Sandbox Code Playgroud)
这会返回一个空列表。如果我使用不带过滤器的 listStatus 行,它会返回我传入的路径中所有文件的列表,包括所有 *.json 文件。所以我知道它们存在,但我无法让过滤器工作。
这只是一个例子,从前两个表中我得到了同样的错误:
MySQL说:文档
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 10
CREATE TABLE Tallas
(
IDTalla int NOT NULL AUTO_INCREMENT,
descripcion varchar(45) NOT NULL,
PRIMARY KEY (IDTalla),
)
CREATE TABLE Modelo
(
IDModelo int NOT NULL AUTO_INCREMENT,
IDTalla int NOT NULL,
modeloNombre varchar(45) NOT NULL,
precio varchar(45) NOT NULL,
informacion varchar(45) NOT NULL,
PRIMARY KEY (IDModelo),
FOREIGN KEY …Run Code Online (Sandbox Code Playgroud) 我正在尝试将查询结果导出到文件系统。一切正常,除了我无法将列标题作为文件的一部分。这是我的脚本的样子:
set hive.cli.print.header=true;
set mapreduce.task.timeout=0;
set hive.auto.convert.join=false;
set hive.execution.engine=tez;
insert overwrite local directory '/work/output'
ROW FORMAT DELIMTED
FIELDS TERMINATED BY '|'
select...
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?