本地SPARK开发环境搭建

本地SPARK开发环境搭建

janice No Comments

1、安装JAVA8

将附件的JDK下载解压到目录下

然后配置环境变量JAVA_HOME、CLASSPATH(%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;)、以及添加PATH(%JAVA_HOME%\bin)

配置完成后,打开cmd输入java-version查看环境是否生效

2、配置hadoop环境

将附件的HADOOP下载解压到目录下

然后配置环境变量HADOOP_HOME以及添加PATH(%HADOOP_HOME%\bin)

3、配置SPARK环境

将附件的HADOOP下载解压到目录下

然后配置环境变量SPARK_HOME、PYTHONPATH(%SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-0.10.4-src.zip;%PYTHONPATH%)以及添加PATH(%SPARK_HOME%\sbin、%SPARK_HOME%\bin)

测试spark

打开CMD输入spark-shell

4、安装pyspark

  1. pip install pyspark

测试

打开CMD输入pyspark

5、测试代码

 


# -*- coding: UTF-8 -*-
from pyspark.sql import SparkSession
spark = SparkSession.builder \
.appName("sparkUserLog") \
.master("local[*]") \
.getOrCreate()
df = spark.createDataFrame([
(1, 144.5, 5.9, 33, 'M'),
(2, 167.2, 5.4, 45, 'M'),
(3, 124.1, 5.2, 23, 'F'),
(4, 144.5, 5.9, 33, 'M'),
(5, 133.2, 5.7, 54, 'F'),
(3, 124.1, 5.2, 23, 'F'),
(5, 129.2, 5.3, 42, 'M'),
], ['id', 'weight', 'height', 'age', 'gender'])
df.show()

JAVA8虚拟内存问题

janice No Comments

java 8 进程的 VIRT 虚拟内存使用超高
现代操作系统里面分配虚拟地址空间操作不同于分配物理内存。在64位操作系统上,可用的最大虚拟地址空间有16EB。
glibc 在版本 2.10 引入的 arena 新功能导致。CentOS 6/7 的 glibc 大都是 2.12/ 2.17 了,所以都会有这个问题。这个功能对每个线程都分配一个分配一个本地arena来加速多线程的执行。
在 glibc 的 arena.c 中使用的 mmap() 调用就和之前的示例代码类似:
p2 = (char *)mmap(aligned_heap_area, HEAP_MAX_SIZE, PROT_NONE,
MAP_NORESERVE | MAP_ANONYMOUS | MAP_PRIVATE, -1, 0)
之后,只有很小的一部分地址被映射到了物理内存中:
mprotect(p2, size, PROT_READ | PROT_WRITE)
因此在一个多线程程序中,会有相当多的 64MB 的 arena 被分配。这个可以用环境变量 MALLOC_ARENA_MAX 来控制。在64位系统中的默认值为 128。

Java 程序由于自己维护堆的使用,导致调用 glibc 去管理内存的次数较少。更糟的是 Java 8 开始使用 metaspace 原空间取代永久代,而元空间是存放在操作系统本地内存中,那线程一多,每个线程都要使用一点元空间,每个线程都分配一个 arena,每个都64MB,就会导致巨大的虚拟地址被分配。

hive表结构以及hdfs文件大小命令

janice No Comments

方法1:查看表的字段信息
desc table_name;
方法2:查看表的字段信息及元数据存储路径
desc extended table_name;
方法3:查看表的字段信息及元数据存储路径
desc formatted table_name;
方法1:查看一个hive表文件总大小时(单位为Byte),我们可以通过一行脚本快速实现,其命令如下:
–#查看目录大小
$ hadoop fs -ls  xx|awk -F ‘ ‘ ‘{print $5}’|awk ‘{a+=$1}END{print a}’
 
–#查看目录大小 G
$ hadoop fs -ls xx|awk -F ‘ ‘ ‘{print $5}’|awk ‘{a+=$1}END{print a/(1024*1024*1024)}’
 
–#查看该目录总容量大小,单位为G
$ hadoop fs -du xx|awk ‘{ SUM += $1 } END { print SUM/(1024*1024*1024)}’

pycharm开发pyspark的坑

janice No Comments

windows进行pyspark安装的时候,用cmd命令行执行pyspark一切正常。

后面桌面点击pycharm在pycharm里面执行pyspark的时候,发现了各种问题,

初步认定是pycharm的环境变量问题。经过一系列搜索查询,发现直接在pycharm目录里面打开pycharm和桌面快捷方式打开pycharm效果不一样。在目录里打开会继承系统的环境变量,而桌面打开不会继承系统环境变量。

果断删掉快捷方式,把pycharm目录做一个桌面快捷方式,以后直接在目录打开。

sqoop hive-import坑

janice No Comments

sqoop 进行hive-import的时候,如果导入一个已经存在的分区,要注意导入的路径问题,如果导入跟分区在同一个目录在load入hive的时候会把数据给覆盖清除。所以导入已有分区的时候,可以先清除分区或者换到另外一个目录下。

分类目录

关于我

 Janice 詹

QQ   455899417

janice2014@foxmail.com