我正在对Hive可用的存储格式进行一些测试,并使用Parquet和ORC作为主要选项.我使用默认压缩包含ORC一次,使用Snappy包含一次.
我已经阅读了许多文件,说明Parquet在时间/空间复杂性方面比ORC更好,但我的测试与我经历的文件相反.
关注我的数据的一些细节.
Table A- Text File Format- 2.5GB
Table B - ORC - 652MB
Table C - ORC with Snappy - 802MB
Table D - Parquet - 1.9 GB
Run Code Online (Sandbox Code Playgroud)
就我的桌子的压缩而言,实木复合地板是最糟糕的.
我对上表的测试得出以下结果.
行计数操作
Text Format Cumulative CPU - 123.33 sec
Parquet Format Cumulative CPU - 204.92 sec
ORC Format Cumulative CPU - 119.99 sec 
ORC with SNAPPY Cumulative CPU - 107.05 sec
Run Code Online (Sandbox Code Playgroud)
列操作的总和
Text Format Cumulative CPU - 127.85 sec   
Parquet Format Cumulative CPU - 255.2 sec   
ORC Format Cumulative …Run Code Online (Sandbox Code Playgroud) 我在HDFS上有一个文本文件,我想将它转换为Spark中的数据框.
我使用Spark Context加载文件,然后尝试从该文件生成单个列.
val myFile = sc.textFile("file.txt")
val myFile1 = myFile.map(x=>x.split(";"))
Run Code Online (Sandbox Code Playgroud)
执行此操作后,我正在尝试以下操作.
myFile1.toDF()
Run Code Online (Sandbox Code Playgroud)
我遇到了问题,因为myFile1 RDD中的元素现在是数组类型.
我该如何解决这个问题?
我正在尝试安装maria db并遇到以下问题.
[root@localhost ~]# service mysqld start
Redirecting to /bin/systemctl start  mysqld.service
Job for mariadb.service failed. See 'systemctl status mariadb.service' and 'journalctl -xn' for details.
Run Code Online (Sandbox Code Playgroud)
我尝试了'systemctl status mariadb.service'和'journalctl -xn'并按照细节进行操作.
[root@localhost ~]# systemctl status mariadb.service
mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled)
   Active: failed (Result: exit-code) since Sun 2014-09-21 17:19:44 IST; 23s ago
  Process: 2712 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=1/FAILURE)
  Process: 2711 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=0/SUCCESS)
  Process: 2683 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 2711 (code=exited, status=0/SUCCESS)
Sep 21 17:19:42 …Run Code Online (Sandbox Code Playgroud) 好!所以我决定使用Parquet作为hive表的存储格式,在我实际在集群中实现之前,我决定运行一些测试.令人惊讶的是,Parquet在我的测试中速度较慢,因为它比普通文本文件更快.
请注意,我在MapR上使用Hive-0.13
遵循我的操作流程
表A.
格式 - 文本格式
表大小 - 2.5 Gb
表B.
格式 - 镶木地板
表大小 - 1.9 Gb
[创建表格B作为选择*从A存储为镶木地板]
表C.
格式 - 带有快速压缩的镶木地板
表大小 - 1.9 Gb
[创建表格C存储为镶木地板tblproperties("parquet.compression"="SNAPPY")作为select*from A]
现在我对上面提到的表进行了一些测试并遵循了细节.
表A.
地图 - 15
减少 - 1
累积CPU - 123.33秒
所需时间 - 59.057秒
表B.
地图 - 8
减少 - 1
累计CPU - 204.92秒
所需时间 - 50.33秒
表A.
地图 - 15
减少 - 0
累计CPU - 51.18秒
所需时间 - 25.296秒
表B.
地图 - 8
减少 - 0
累计CPU …
我有一个平面文件,如下所示.
id,name,desg,tdate
1,Alex,Business Manager,2016-01-01
Run Code Online (Sandbox Code Playgroud)
我正在使用Spark Context来读取此文件,如下所示.
val myFile = sc.textFile("file.txt")
Run Code Online (Sandbox Code Playgroud)
我想从这个文件生成一个Spark DataFrame,我使用以下代码来实现.
case class Record(id: Int, name: String,desg:String,tdate:String)
val myFile1 = myFile.map(x=>x.split(",")).map {
  case Array(id, name,desg,tdate) => Record(id.toInt, name,desg,tdate)
} 
myFile1.toDF()
Run Code Online (Sandbox Code Playgroud)
这给了我一个DataFrame,其id为int,其余列为String.
我希望将最后一列tdate转换为日期类型.
我怎样才能做到这一点?
我最近在Ubunutu 16.04上安装了docker-ce,并按照Docker文档中的说明配置了docker-machine软件包.
在测试安装时,docker run命令执行正常但是docker-machine create命令要求配置Virtual Box.
根据我的理解,docker容器在Linux上运行,因此需要在Mac或Windows上没有Hyper-V支持的VirtualBox,但为什么在Ubuntu上需要它?
Virtual Box在创建Docker Machine时有什么用?