2018年1月

方法一:

工具:“GDebi”,这是一个用于安装你自己手动下载包的GUI程序,它会根据软件仓库这一实用的特性,来解算依赖关系。也可以命令行模式运行,其功能和GUI模式下完全一样。

  (1)打开“终端”,输入命令: sudo apt-get install gdebi,然后按enter执行来安装这款小工具“gdebi”。
 正常情况下终端会提醒你按(Y/N)来决定是否真的安装,我们输入“Y”,然后按回车键继续。这里小编已经安装过啦~~~

(2)安装完成后,我们接着在终端中继续输入: cd 下载 (这里是指定搜狗文件所在的目录),如果你不确定可以继续输入:ls 就可以查看当前目录中的文件啦。

(3)

输入:sudo gdebi sogoupinyin.deb (这里小编嫌文件包名称太长就该啦),再按enter执行后,等待搜狗安装完成。

如果期间提示“您是否想要安装这个软件包(Y/N)”,那么你输入“Y”然后按回车键就可以了。

(4) 安装完成后,我们点击系统屏幕右上角的那个齿轮图标,然后点击“注销”,注销或重启一下系统就好啦。

方法二:
转载 http://blog.csdn.net/troylemon/article/details/52123758

方法三:
转载https://jingyan.baidu.com/article/08b6a591cb06f114a8092209.html

注意::
本来想先移除ibus,但是在之后发现如果直接使用下面的命令
sudo apt-get remove ibus
移除ibus将导致系统某些地方不正常的问题,例如系统设置项缺失.
所以保留ibus吧.(千万不要移除ibus,否则后果很严重。系统页面什么都会没有,如系统缺项)

若果不小心删除了,我在另一篇文章有解决的方法。http://blog.csdn.net/wza_1992/article/details/78003060

sparkStreaming结合flume操作流程

依赖包导入lib文件夹,配置文件conf修改(source,channel,sink三个部分)

(1)安装flume1.6以上
(2)下载依赖包
spark-streaming-flume-sink_2.11-2.0.2.jar放入到flume的lib目录下
(3)写flume的agent,注意既然是拉取的方式,那么flume向自己所在的机器上产数据就行
(4)编写flume-poll/push.conf配置文件

1 flume push方式(只能向一台机器推数据,很有局限)

编写flume-push.conf配置文件

push mode

a1.sources = r1
a1.sinks = k1
a1.channels = c1

source

a1.sources.r1.channels = c1
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /root/data
a1.sources.r1.fileHeader = true

channel

a1.channels.c1.type =memory
a1.channels.c1.capacity = 20000
a1.channels.c1.transactionCapacity=5000

sinks

a1.sinks.k1.channel = c1
a1.sinks.k1.type = avro
a1.sinks.k1.hostname=172.16.43.63
a1.sinks.k1.port = 8888
a1.sinks.k1.batchSize= 2000

注意配置文件中指明的hostname和port是spark应用程序所在服务器的ip地址和端口。

#首先启动spark-streaming应用程序
#再
flume-ng agent -n a1 -c /export/servers/flume/conf -f /export/servers/flume/conf/flume-poll-spark.conf -Dflume.root.logger=INFO,console

生产数据命令: while true;do echo hadoop hadoop spark>>/root/data.txt;sleep 2;done 

2 flume poll方式(可以配置多台flume)
编写flume-poll.conf配置文件

a1.sources = r1
a1.sinks = k1
a1.channels = c1
#source
a1.sources.r1.channels = c1
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /root/data
a1.sources.r1.fileHeader = true
#channel
a1.channels.c1.type =memory
a1.channels.c1.capacity = 20000
a1.channels.c1.transactionCapacity=5000
#sinks
a1.sinks.k1.channel = c1
a1.sinks.k1.type = org.apache.spark.streaming.flume.sink.SparkSink
a1.sinks.k1.hostname=hdp-node-01
a1.sinks.k1.port = 8888
a1.sinks.k1.batchSize= 2000       

                
#首先将下载好的spark-streaming-flume-sink_2.10-2.0.2.jar放入到flume的lib目录下
#启动flume
bin/flume-ng agent -n a1 -c /export/servers/flume/conf -f /export/servers/flume/conf/flume-poll-spark.conf -Dflume.root.logger=INFO,console
#再启动spark-streaming应用程序

1.Schema是什么

     DataFrame中提供了详细的数据结构信息,从而使得SparkSQL可以清楚地知道该数据集中包含哪些列,每列的名称和类型各是什么,

DataFrame中的数据结构信息,即为schema。
2.输出schema

  还是用官网中的people.json的文件,输出schema,看看schema到底长什么样子。people.json文件的show()在上一篇文章中已经写到
scala> personDF.printSchema
root
 |-- id: integer (nullable = false)
 |-- name: string (nullable = true)
 |-- age: integer (nullable = false)

结构化数据、半结构化数据和非结构化数据

结构化数据

结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。举一个例子:

id      name    age     gender
1       lyh     12      male
2       liangyh 13      female
3       liang   18      male

所以,结构化的数据的存储和排列是很有规律的,这对查询和修改等操作很有帮助。但是,显然,它的扩展性不好(比如,我希望增加一个字段,怎么办?)。

半结构化数据

半结构化数据是结构化数据的一种形式,它并不符合关系型数据库或其他数据表的形式关联起来的数据模型结构,但包含相关标记,用来分隔语义元素以及对记录和字段进行分层。因此,它也被称为自描述的结构。

半结构化数据,属于同一类实体可以有不同的属性,即使他们被组合在一起,这些属性的顺序并不重要。

常见的半结构数据有XML和JSON,对于对于两个XML文件,第一个可能有

<person>
    <name>A</name>
    <age>13</age>
    <gender>female</gender>
</person>

第二个可能为:

   <person>
        <name>B</name>
        <gender>male</gender>
    </person>

从上面的例子中,属性的顺序是不重要的,不同的半结构化数据的属性的个数是不一定一样的。有些人说半结构化数据是以树或者图的数据结构存储的数据,怎么理解呢?上面的例子中,<person>标签是树的根节点,<name>和<gender>标签是子节点。通过这样的数据格式,可以自由地表达很多有用的信息,包括自我描述信息(元数据)。所以,半结构化数据的扩展性是很好的。

非结构化数据

顾名思义,就是没有固定结构的数据。各种文档、图片、视频/音频等都属于非结构化数据。对于这类数据,我们一般直接整体进行存储,而且一般存储为二进制的数据格式。