hive的3种数据存储格式

2023-11-20

hive有textFile,SequenceFile,RCFile三种文件格式。

其中textfile为默认格式,建表时不指定默认为这个格式,导入数据时会直接把数据文件拷贝到hdfs上不进行处理。

 

SequenceFile,RCFile格式的表不能直接从本地文件导入数据,数据要先导入到textfile格式的表中,然后再从textfile表中用insert导入到SequenceFile,RCFile表中。

写道
create table zone0000tf(ra int, dec int, mag int) row format delimited fields terminated by '|';
create table zone0000rc(ra int, dec int, mag int) row format delimited fields terminated by '|' stored as rcfile;

load data local inpath '/home/cq/usnoa/zone0000.asc ' into table zone0000tf;
insert overwrite table zone0000rc select * from zone0000tf;(begin a job)
 

 

File Format
 

TextFile

SequenceFIle

RCFFile

Data type

Text Only

Text/Binary

Text/Binary

Internal Storage Order

Row-based

Row-based

Column-based

Compression

File Based

Block Based

Block Based

Splitable

YES

YES

YES

Splitable After Compression

No

YES

YES

 
 
 

源数据放在test1表中,大小 26413896039 Byte。


创建sequencefile 压缩表test2,使用insert  overwrite table test2 select ...语句将test1数据导入 test2 ,设置配置项:

set hive.exec.compress.output=true;
set mapred.output.compress=true;
set mapred.output.compression.codec=com.hadoop.compression.lzo.LzoCodec;
SET io.seqfile.compression.type=BLOCK;
set io.compression.codecs=com.hadoop.compression.lzo.LzoCodec;

导入耗时:98.528s。另压缩类型使用默认的record,耗时为418.936s。


创建rcfile 表test3 ,同样方式导入test3。

set hive.exec.compress.output=true;
set mapred.output.compress=true;
set mapred.output.compression.codec=com.hadoop.compression.lzo.LzoCodec;
set io.compression.codecs=com.hadoop.compression.lzo.LzoCodec;

导入耗时 253.876s。


以下为其他统计数据对比:



rows 类型 合并耗时 文件数 总数据大小 count(1) 基于domain、referer求点击的top100
238610458 原始数据 1134 26413896039 66.297s
238610458 seq 98.528(block) 418.936(record) 1134 32252973826 41.578 394.949s(读入数据:32,253,519,280,读入行数:238610458)
238610458 rcfile 253.876 s 15 3765481781 29.318 286.588s(读入数据:1,358,993,读入行数:238610458

因为原始数据中均是小文件,所以合并后文件数大量减少,但是hive实现的seqfile 处理竟然还是原来的数目。rcfile 使用lzo 压缩效果明显,7倍的压缩比率。查询数据中读入数据因为这里这涉及小部分数据,所以rcfile的表读入数据仅是seqfile的4%.而读入行数一致。

 
 

SequeceFile是Hadoop API提供的一种二进制文件支持。这种二进制文件直接将<key, value>对序列化到文件中。一般对小文件可以使用这种文件合并,即将文件名作为key,文件内容作为value序列化到大文件中。这种文件格式有以下好处
1)支持压缩,且可定制为基于Record或Block压缩(Block级压缩性能较优)
2)本地化任务支持:因为文件可以被切分,因此MapReduce任务时数据的本地化情况应该是非常好的。
3)难度低:因为是Hadoop框架提供的API,业务逻辑侧的修改比较简单。
坏处是需要一个合并文件的过程,且合并后的文件将不方便查看。

SequenceFile 是一个由二进制序列化过的key/value的字节流组成的文本存储文件,它可以在map/reduce过程中的input/output 的format时被使用。在map/reduce过程中,map处理文件的临时输出就是使用SequenceFile处理过的。
SequenceFile分别提供了读、写、排序的操作类。
SequenceFile的操作中有三种处理方式:
1) 不压缩数据直接存储。 //enum.NONE
2) 压缩value值不压缩key值存储的存储方式。//enum.RECORD
3)key/value值都压缩的方式存储。//enum.BLOCK

 

 

工作中用到了RcFile来存储和读取RcFile格式的文件,记录下。
RcFile是FaceBook开发的一个集行存储和列存储的优点于一身,压缩比更高,读取列更快,它在MapReduce环境中大规模数据处理中扮演着重要的角色。
读取操作:

Java代码 复制代码  收藏代码
  1. job信息:   
  2.         Job job = new Job();   
  3.             job.setJarByClass(类.class);   
  4.         //设定输入文件为RcFile格式   
  5.             job.setInputFormatClass(RCFileInputFormat.class);     
  6.         //普通输出   
  7.             job.setOutputFormatClass(TextOutputFormat.class);   
  8.         //设置输入路径   
  9.             RCFileInputFormat.addInputPath(job, new Path(srcpath));   
  10.             //MultipleInputs.addInputPath(job, new Path(srcpath), RCFileInputFormat.class);   
  11.         // 输出   
  12.             TextOutputFormat.setOutputPath(job, new Path(respath));   
  13.             // 输出key格式   
  14.             job.setOutputKeyClass(Text.class);     
  15.         //输出value格式   
  16.             job.setOutputValueClass(NullWritable.class);     
  17.         //设置mapper类   
  18.             job.setMapperClass(ReadTestMapper.class);   
  19.         //这里没设置reduce,reduce的操作就是读Text类型文件,因为mapper已经给转换了。   
  20.                
  21.             code = (job.waitForCompletion(true)) ? 0 : 1;   
  22.   
  23.   
  24. // mapper 类   
  25.   
  26. pulic class ReadTestMapper extends Mapper<LongWritable, BytesRefArrayWritable, Text, NullWritable> {   
  27.            
  28.         @Override  
  29.         protected void map(LongWritable key, BytesRefArrayWritable value, Context context) throws IOException, InterruptedException {   
  30.             // TODO Auto-generated method stub   
  31.             Text txt = new Text();    
  32.         //因为RcFile行存储和列存储,所以每次进来的一行数据,Value是个列簇,遍历,输出。   
  33.             StringBuffer sb = new StringBuffer();   
  34.             for (int i = 0; i < value.size(); i++) {   
  35.                 BytesRefWritable v = value.get(i);   
  36.                 txt.set(v.getData(), v.getStart(), v.getLength());   
  37.                 if(i==value.size()-1){   
  38.                     sb.append(txt.toString());   
  39.                 }else{   
  40.                     sb.append(txt.toString()+"\t");   
  41.                 }   
  42.             }   
  43.             context.write(new Text(sb.toString()),NullWritable.get());   
  44.             }   
  45.         }  
job信息:
	    Job job = new Job();
            job.setJarByClass(类.class);
		//设定输入文件为RcFile格式
            job.setInputFormatClass(RCFileInputFormat.class);  
		//普通输出
            job.setOutputFormatClass(TextOutputFormat.class);
		//设置输入路径
            RCFileInputFormat.addInputPath(job, new Path(srcpath));
            //MultipleInputs.addInputPath(job, new Path(srcpath), RCFileInputFormat.class);
		// 输出
            TextOutputFormat.setOutputPath(job, new Path(respath));
            // 输出key格式
            job.setOutputKeyClass(Text.class);  
		//输出value格式
            job.setOutputValueClass(NullWritable.class);  
		//设置mapper类
            job.setMapperClass(ReadTestMapper.class);
		//这里没设置reduce,reduce的操作就是读Text类型文件,因为mapper已经给转换了。
            
            code = (job.waitForCompletion(true)) ? 0 : 1;


// mapper 类

pulic class ReadTestMapper extends Mapper<LongWritable, BytesRefArrayWritable, Text, NullWritable> {
        
        @Override
        protected void map(LongWritable key, BytesRefArrayWritable value, Context context) throws IOException, InterruptedException {
            // TODO Auto-generated method stub
            Text txt = new Text(); 
		//因为RcFile行存储和列存储,所以每次进来的一行数据,Value是个列簇,遍历,输出。
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < value.size(); i++) {
                BytesRefWritable v = value.get(i);
                txt.set(v.getData(), v.getStart(), v.getLength());
                if(i==value.size()-1){
                    sb.append(txt.toString());
                }else{
                    sb.append(txt.toString()+"\t");
                }
            }
            context.write(new Text(sb.toString()),NullWritable.get());
            }
        }



输出压缩为RcFile格式:

Java代码 复制代码  收藏代码
  1. job信息:   
  2.             Job job = new Job();   
  3.             Configuration conf = job.getConfiguration();   
  4.         //设置每行的列簇数   
  5.             RCFileOutputFormat.setColumnNumber(conf, 4);   
  6.             job.setJarByClass(类.class);   
  7.   
  8.             FileInputFormat.setInputPaths(job, new Path(srcpath));   
  9.             RCFileOutputFormat.setOutputPath(job, new Path(respath));   
  10.   
  11.             job.setInputFormatClass(TextInputFormat.class);   
  12.             job.setOutputFormatClass(RCFileOutputFormat.class);   
  13.   
  14.             job.setMapOutputKeyClass(LongWritable.class);   
  15.             job.setMapOutputValueClass(BytesRefArrayWritable.class);   
  16.   
  17.             job.setMapperClass(OutPutTestMapper.class);   
  18.   
  19.             conf.set("date", line.getOptionValue(DATE));   
  20.         //设置压缩参数   
  21.             conf.setBoolean("mapred.output.compress"true);   
  22.             conf.set("mapred.output.compression.codec""org.apache.hadoop.io.compress.GzipCodec");   
  23.   
  24.             code = (job.waitForCompletion(true)) ? 0 : 1;   
  25.   
  26. mapper类:   
  27.     public class OutPutTestMapper extends Mapper<LongWritable, Text, LongWritable, BytesRefArrayWritable> {   
  28.         @Override  
  29.         public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {   
  30.             String line = value.toString();   
  31.             String day = context.getConfiguration().get("date");   
  32.             if (!line.equals("")) {   
  33.                 String[] lines = line.split(" ", -1);   
  34.                 if (lines.length > 3) {   
  35.                     String time_temp = lines[1];   
  36.                     String times = timeStampDate(time_temp);   
  37.                     String d = times.substring(010);   
  38.                     if (day.equals(d)) {   
  39.                         byte[][] record = {lines[0].getBytes("UTF-8"), lines[1].getBytes("UTF-8"),lines[2].getBytes("UTF-8"), lines[3].getBytes("UTF-8")};   
  40.   
  41.                         BytesRefArrayWritable bytes = new BytesRefArrayWritable(record.length);   
  42.   
  43.                         for (int i = 0; i < record.length; i++) {   
  44.                             BytesRefWritable cu = new BytesRefWritable(record[i], 0, record[i].length);   
  45.                             bytes.set(i, cu);   
  46.                         }   
  47.                         context.write(key, bytes);   
  48.                     }   
  49.                 }   
  50.             }   
  51.         }  

 


SequenceFile提供了若干Writer的构造静态获取。
//SequenceFile.createWriter();

SequenceFile.Reader使用了桥接模式,可以读取SequenceFile.Writer中的任何方式的压缩数据。

三种不同的压缩方式是共用一个数据头,流方式的读取会先读取头字节去判断是哪种方式的压缩,然后根据压缩方式去解压缩并反序列化字节流数据,得到可识别的数据。

流的存储头字节格式:
Header:
*字节头”SEQ”, 后跟一个字节表示版本”SEQ4”,”SEQ6”.//这里有点忘了 不记得是怎么处理的了,回头补上做详细解释
*keyClass name
*valueClass name
*compression boolean型的存储标示压缩值是否转变为keys/values值了
*blockcompression boolean型的存储标示是否全压缩的方式转变为keys/values值了
*compressor 压缩处理的类型,比如我用Gzip压缩的Hadoop提供的是GzipCodec什么的..
*元数据 这个大家可看可不看的

所有的String类型的写操作被封装为Hadoop的IO API,Text类型writeString()搞定。

未压缩的和只压缩values值的方式的字节流头部是类似的:
*Header
*RecordLength记录长度
*key Length key值长度
*key 值
*是否压缩标志 boolean
*values
剩下的大家可看可不看的,并非这个类中主要的。

 
 

 

根据自身涉及到的数据分布和使用需求,对HIVE上的三类文件格式做了如下测试,指导HIVE的文件格式选型。测试存在环境、数据分布、测试偏重点的不同,本测试只供参考,不作为大家选型决策的绝对指导。
HIVE的三种文件格式:TEXTFILE、SEQUENCEFILE、RCFILE中,TEXTFILE和SEQUENCEFILE的存储格式都是基于行存储的,RCFILE是基于行列混合的思想,先按行把数据划分成N个row group,在row group中对每个列分别进行存储。
基于HDFS的行存储具备快速数据加载和动态负载的高适应能力,因为行存储保证了相同记录的所有域都在同一个集群节点。但是它不太满足快速的查询响应时间的要求,因为当查询仅仅针对所有列中的少数几列时,它就不能跳过不需要的列,直接定位到所需列;同时在存储空间利用上,它也存在一些瓶颈,由于数据表中包含不同类型,不同数据值的列,行存储不易获得一个较高的压缩比。RCFILE是基于SEQUENCEFILE实现的列存储格式。除了满足快速数据加载和动态负载高适应的需求外,也解决了SEQUENCEFILE的一些瓶颈。
接下来就针对压缩比、数据加载、查询响应角度对HIVE的三种文件格式进行比较,主要比较对象为SEQUENCEFILE和RCFILE,因为TEXTFILE在压缩后不能发挥MapReduce的并行处理能力,所以此文件格式不会被我们采用。
压缩比
测试数据为1月11号产品表的当前数据,利用此数据保存到三张表,分别采用三种文件格式,压缩方式统一为gzip
存储格式               文件大小
TEXTFILE               21.4GB
SEQUENCEFILE     22.3GB
RCFILE                  18.0GB
RCFILE的压缩比优于SEQUENCEFILE。
 
上图是HADOOP的不同压缩方法的一个性能对比图(摘自《pro hadoop》第5章),其中gzip是空间和时间比较折中的压缩方法,后续测试也反应了这一点。
数据加载
上图是三类文件格式的数据插入不同压缩类型,不同文件格式的数据加载时间对比图。
1.同一份数据的加载时间为lzo < gzip < bz2和不同压缩方式性能对比图的结果一致。
2.目标表为SEQUENCEFILE的数据加载时间优于TEXTFILE和RCFILE。
查询响应
测试1:
数据表wp_product_target包含62个字段,字段类型包含:BIGINT、DOUBLE、STRING。
执行如下两种SQL查询:
方案一,测试整行记录的查询效率:
select * from wp_product_target where product_id like '480523%';
方案二,测试特定列的查询效率:
select product_id, gmt_create, dw_end_date from wp_product_target where product_id like '480523%';
上图反映了RCFILE的查询效率都优于SEQUENCEFILE。
测试2:
数据表wp_product_detail包含8个字段,只取了product_id和description两个字段做测试。product_id的数据占用存储为:447MB,description的数据占用存储为:89697MB。
本测试目的是验证RCFILE的数据读取方式和Lazy解压方式是否有性能优势。数据读取方式只读取元数据和相关的列,节省IO;Lazy解压方式只解压相关的列数据,对不满足where条件的查询数据不进行解压,IO和效率都有优势。

方案一:

insert overwrite local directory '/home/dwapp/hugh.wangp'
select product_id, description
from wp_product_detail
where product_id like '480523%';
方案二:
insert overwrite local directory '/home/dwapp/hugh.wangp'
select product_id, description
from wp_product_detail
where substr(product_id, 1, 2) = '50';
方案三:
insert overwrite local directory '/home/dwapp/hugh.wangp'
select product_id, description
from wp_product_detail_sf;

方案四:

insert overwrite local directory '/home/dwapp/hugh.wangp'
select product_id
from wp_product_detail;
前三个方案的查询数据量:800条,700万条,1.8亿条。

上图反应在大小数据集上,RCFILE的查询效率高于SEQUENCEFILE。
上图反应在特定字段数据读取时,RCFILE的查询效率依然优于SEQUENCEFILE。
总结
1.在压缩比方面,RCFILE有较优的压缩比,因为SEQUENCEFILE是行压缩,行内不同数据值统一压缩,但是RCFILE对每列独立压缩,避免了不同数据值的混合压缩,所以压缩比相对高一些。但是由于对列进行压缩存储,压缩性能比单单对行进行压缩消耗更多。也正体现了压缩的空间和时间的矛盾体。
2.数据加载方面,SEQUENCEFILE优于RCFILE,因为RCFILE的列压缩方式,数据加载压缩时的性能消耗比较大。但是对于数据仓库的一次写入、多次读取,数据的加载性能对整体利用影响没有压缩比和查询响应大。
3.查询响应方面,RCFILE有较优的表现。RCFILE的数据读取方式和Lazy解压方式起到了很大的作用,在读取数据的每个行组时,RCFILE只需读取元数据头部和查询指定的列,而不是行组的全部数据都读到内存中,节省了很多的I/O。虽然读取了元数据头部和查询指定的列,但是不是对这些数据完全解压,Lazy解压技术保证了,只解压满足where条件的数据。
总之,相对于SEQUENCEFILE,RCFILE的压缩比有20%左右的提升,数据加载时间有10%左右的劣势,查询响应时间平均有15%左右的优势,尤其在大数据量的非全字段查询上有30%左右的性能优势。
所以从上面的测试比较可以看出,RCFILE是HIVE最适合的文件存储格式,压缩方式采用GZIP压缩。
业界使用情况,FACEBOOK目前所有HIVE的文件全部采用RCFILE存储,国内的盛大也采用RCFILE存储。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hive的3种数据存储格式 的相关文章

  • java.io.IOException: EnsureRemaining: 仅剩余 0 个字节,尝试读取 1

    我在 giraph 中的自定义类方面遇到一些问题 我制作了 VertexInput 和 Output 格式 但总是收到以下错误 java io IOException ensureRemaining Only bytes remaining
  • HBase、Hadoop:如何估计 HBase 表或 Hadoop 文件系统路径的大小?

    我有多个 HBase 表 如何估计在 java 中使用的表的大致大小 一种方法是你必须使用java客户端访问hdfs 通常在 hbase文件夹 所有表格信息 将在场 Hadoop 外壳 你可以检查使用hadoop fs du h path
  • 将 Spark 添加到 Oozie 共享库

    默认情况下 Oozie 共享 lib 目录提供 Hive Pig 和 Map Reduce 的库 如果我想在 Oozie 上运行 Spark 作业 最好将 Spark lib jar 添加到 Oozie 的共享库 而不是将它们复制到应用程序
  • 无法在 Windows 10 中启动 Spark Master

    我是 Spark 新手 我正在尝试手动启动 master 在 Windows 10 中使用 MINGW64 当我这样做时 Downloads spark 1 5 1 bin hadoop2 4 spark 1 5 1 bin hadoop2
  • 公平调度器和容量调度器有什么区别?

    我是 Hadoop 世界的新手 想了解公平调度程序和容量调度程序之间的区别 另外我们什么时候应该使用每一个 请简单地回答一下 因为我在网上读了很多东西 但从中得到的不多 公平调度是一种为作业分配资源的方法 使得所有作业随着时间的推移平均获得
  • 使用 org.apache.hadoop/* 依赖项离线编译 sbt 时遇到的问题

    使用依赖于 org apache hadoop 包的 sbt 进行离线编译时遇到很多麻烦 一个简单的build sbt name Test version 1 0 scalaVersion 2 10 4 libraryDependencie
  • 覆盖hadoop中的log4j.properties

    如何覆盖hadoop中的默认log4j properties 如果我设置 hadoop root logger WARN console 它不会在控制台上打印日志 而我想要的是它不应该在日志文件中打印 INFO 我在 jar 中添加了一个
  • 如何强制 Spark 执行代码?

    我如何强制 Spark 执行对 map 的调用 即使它认为由于其惰性求值而不需要执行它 我试过把cache 与地图调用 但这仍然没有解决问题 我的地图方法实际上将结果上传到 HDFS 所以 它并非无用 但 Spark 认为它是无用的 简短回
  • 全部配对图表上的所有路径

    这可能是一个没有最佳解决方案的问题 假设我有一个有向图 不知道它是否有循环 循环检测将是这个问题的方面之一 给定一组顶点 可能是数百万个顶点 我需要计算给定图的所有唯一对之间的所有不同路径 没有重复顶点的路径 我该如何应对这种情况 让我们看
  • 使用 Java API 在 Hadoop 中移动文件?

    我想使用 Java API 在 HDFS 中移动文件 我想不出办法做到这一点 FileSystem 类似乎只想允许在本地文件系统之间移动 但我想将它们保留在 HDFS 中并将它们移动到那里 我错过了一些基本的东西吗 我能想到的唯一方法是从输
  • 以不同用户身份运行 MapReduce 作业

    我有一个与 Hadoop 交互的 Web 应用程序 Cloudera cdh3u6 特定的用户操作应在集群中启动新的 MapReduce 作业 该集群不是一个安全集群 但它使用简单的组身份验证 因此 如果我以自己的身份通过 ssh 连接到它
  • 更改spark_temporary目录路径

    是否可以更改 temporarySpark在写入之前保存临时文件的目录 特别是 由于我正在编写表的单个分区 因此我希望临时文件夹位于分区文件夹内 是否可以 由于其实现原因 无法使用默认的 FileOutputCommiter FileOut
  • 在 Google Cloud Dataproc 环境中使用 Hadoop 流式处理运行 python map reduce 作业时出错

    我想使用 hadoop 流方法在 Google Cloud Dataproc 中运行 python map reduce 作业 我的map reduce python脚本 输入文件和作业结果输出位于Google Cloud Storage中
  • sqoop 通过 oozie 导出失败

    我正在尝试将数据导出到mysql from hdfs通过sqoop 我可以通过 shell 运行 sqoop 并且它工作正常 但是当我通过调用oozie 它出现以下错误并失败 我还包括了罐子 没有描述性日志 sqoop脚本 export c
  • 如何用snappy解压hadoop的reduce输出文件尾?

    我们的 hadoop 集群使用 snappy 作为默认编解码器 Hadoop作业减少输出文件名就像part r 00000 snappy JSnappy 无法解压缩文件 bcz JSnappy 需要以 SNZ 开头的文件 归约输出文件以某种
  • Spark引擎执行SQL时如何获取hive UDF中Spark的partitionId或taskContext?

    例如我们用Spark引擎执行下面的SQL 我们需要my udf row 返回 Spark 中的分区 id add jar hdfs dir udf udf jar create temporary function my udf as co
  • 伪模式下没有名称节点错误

    我是hadoop新手 正处于学习阶段 根据 Hadoop Definitve 指南 我已将 hadoop 设置为伪分布式模式 一切正常 昨天我什至能够执行第三章中的所有示例 今天 当我重新启动我的unix并尝试运行start dfs sh然
  • 如何修复“任务尝试_201104251139_0295_r_000006_0 未能报告状态 600 秒”。

    我编写了一个 MapReduce 作业来从数据集中提取一些信息 该数据集是用户对电影的评分 用户数量约25万 电影数量约30万 地图的输出是
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • MapReduce 中 1 个任务的减速器数量

    在典型的 MapReduce 设置 如 Hadoop 中 1 个任务使用多少个减速器 例如计算单词数 我对 Google MapReduce 的理解意味着只涉及 1 个减速器 那是对的吗 例如 单词计数会将输入分为 N 个块 并且 N 个

随机推荐

  • Ubuntu20.04部署android版mediapipe踩坑记录(持续更新。。。)

    1 Android SDK 以及NDK版本问题 根据mediapipe官方文档 SDK要求在28 0 3版本及以上 NDK版本要求介于18和21之间 若版本超出范围容易引发未知的问题 导致无效加班到怀疑人生 注意 SDK build too
  • 机器学习最经典算法-SVM支持向量机-【基本解读算法+详细实际案例分部流程】

    支持向量机 SVM SVM算法可谓是最经典的机器学习算法了 具有泛化错误率低 分类速度快 结果易解释等特点多多 在应用领域涉及非常广 比如人像识别 文本分类 手写字符识别 人脸识别 生物信息学等等等 同时算法模型评估效果也是很优秀的 它为何
  • React 单元测试策略及落地

    写好的单元测试 对开发速度 项目维护有莫大的帮助 前端的测试工具一直推陈出新 而测试的核心 原则却少有变化 与产品代码一并交付可靠的测试代码 是每个专业开发者应该不断靠近的一个理想之地 本文就围绕测试讲讲 为什么我们要做测试 什么是好的测试
  • 自然语言处理nltk下载以及nltk_data下载及其所遇问题解决方案

    目录 一 nltk的下载 二 nltk data 下载 三 解压 nltk data 存放目录可能会出现的问题 一 nltk的下载 新建虚拟环境 conda activate n NLP python 3 8 创建虚拟环境方便管理 激活虚拟
  • IC Compiler指南——数据准备

    一 概述 ICC数据设置的文件关系框图如图 后端工具在数据设置阶段需要对两大类数据进行设置 包括从前端设计继承的综合数据 以及后端设计需要的物理数据 综合数据主要包括前端逻辑综合已经设置过的逻辑与时序库文件 设计约束文件sdc以 及综合网表
  • FileZilla尝试连接“ECONNREFUSED - 连接被服务器拒绝”失败。

    考虑是否在ubuntu下开启了FTP服务 执行以下命令开启 sudo apt get install vsftpd 不能远程登陆 mobaxterm等 unbutu 考虑是否开启了SSH 使用以下命令开启 sudo apt get inst
  • 互联网创业项目整合:提高成功率的关键方法

    互联网创业是当前非常火热的话题 但是市场竞争也异常激烈 成功率不高 今天 我来分享一些互联网创业项目整合的方法 帮助大家创造更大的机会 1 选择适合自己的领域 在选择创业项目时 一定要根据自己的专业 兴趣 经验等因素进行选择 才能更好地发挥
  • clion file and code templates

    主要用于 文件命名为 my class 时 生成的类为 MyClass c class header 和 都是被分割的对象 parse C File Header h ifndef INCLUDE GUARD define INCLUDE
  • L1-039 古风排版(C语言)(测试点2)

    题目 L1 039 古风排版 分数 20 作者 陈越 单位 浙江大学 中国的古人写文字 是从右向左竖向排版的 本题就请你编写程序 把一段文字按古风排版 输入格式 输入在第一行给出一个正整数N lt 100 是每一列的字符数 第二行给出一个长
  • Flickr30k图像标注数据集下载及使用方法

    Flickr30k数据集的下载 可在http shannon cs illinois edu DenotationGraph 中填表 获取下载地址http shannon cs illinois edu DenotationGraph da
  • 【深入理解C++】转发、完美转发、std::forward

    文章目录 1 转发 2 完美转发 3 std forward和std move的区别 4 参考资料 前置知识 万能引用 引用折叠 1 转发 include
  • SIM卡相关知识总结

    主题 SIM基本功能和原理 简介 参考 SIM卡工作原理总结 SIM卡插入检测原理 SIM卡的识卡机制 SIM卡基础技术规范 2 3 4 5G UE和网络鉴权流程的演进 作者 ybb 时间 2021年9月9日 1 初识SIM卡 SIM卡的物
  • JDBC 的简单封装,以sqlite数据库为例

    小驼峰会自动转下划线 Column 注解会覆盖其他策略 就取name名字作为字段名 Table 注解可以重新标记表名 1 主要方法就是save和list两个方法 调用实例如下 package xin tom esui db import o
  • 判断用户设备是移动端还是pc端

    判断用户设备是移动端还是pc端 解决办法 mounted if this isMobile 手机端 else pc端 this getRecordH methods 手机端和pc端 isMobile let flag navigator u
  • webpack5 学习(十二)—— webpack 和 TypeScript 进行集成

    基础配置 首先 安装 TypeScript compiler 和 loader npm install save dev typescript ts loader 安装完成 tsconfig json 设置一个基本的配置来支持 JSX 并将
  • C/C++创建和删除文件夹操作

    一 创建文件夹 1 调用Windows API函数 CreateDirectory 头文件
  • [工具

    Graphviz Graphviz 是一个开源的图形可视化工具 它使用 DOT 语言描述图形结构和属性 并将其转换为图形形式 你可以在 Markdown 中使用 Graphviz 的语法来创建有向图 无向图 流程图等 dot语言官方地址 示
  • 获取360画报图片

    在使用360画报时 有时看到喜欢的图片想保存下来 却不知道怎么保存 今天跟大家分享一下方法 1 360画报文件都在C Users Administrator AppData Roaming 360browser bkinfo这里面 但是不是
  • 前端实现导出excel表格(合并表头)

    需求 勾选行导出为excel表格 合并表头 一 安装插件 npm install save file saver xlsx 运行项目报如下警告的话 运行npm install xlsx 0 16 0 save 来降低版本号 最初我安装的版本
  • hive的3种数据存储格式

    hive有textFile SequenceFile RCFile三种文件格式 其中textfile为默认格式 建表时不指定默认为这个格式 导入数据时会直接把数据文件拷贝到hdfs上不进行处理 SequenceFile RCFile格式的表