头歌:Spark案例剖析 - 谷歌网页排名引擎PageRank实战

第1关:海量数据导入:SparkSQL大数据导入处理

任务描述


工欲善其事必先利其器,大数据分析中最重要的是熟练掌握数据导入工具的使用方法。Spark SQL是Spark自带的数据库,本关你将应用Spark SQL的数据导入工具实现文本数据的导入。其中,graphx-wiki-vertices.txt文件中含有网页及其id数据,graphx-wiki-edges.txt文件中含有网页及其连接网页id数据。

相关知识


Spark与Spark SQL介绍
Spark由Spark SQL,Spark Mlib,Spark Streaming以及Spark GraphX等模块构成。我们通常从Spark SQL或者Spark Streaming中导入数据,再利用Spark Mlib或者Spark GraphX等模块进行数据处理分析。

Spark SQL摆脱了对Hive的依赖性,比起之前的Hive无论在数据兼容、性能优化、组件扩展方面都得到了极大的方便。当使用其他编程语言运行Spark SQL时,将返回数据类型为Dataset或者DataFrame的结果。你还可以使用命令行或通过JDBC/ODBC与Spark SQL界面进行交互。Spark SQL有两个分支,sqlContext和hiveContext,sqlContext目前只支持SQL语法解析器;hiveContext现在支持SQL语法解析器和hivesql语法解析器,用户可以通过配置切换成SQL语法解析器,来运行hiveSQL不支持的语法。下面我们重点介绍Spark SQL的初始化,数据库的使用,外部数据的导入,从而将网页数据导入数据库中方便之后处理。

初始化SparkSQL


利用Scala语言使用Spark SQL首先应该导入Spark SQL的相关包,如下例所示:

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql._


也可通过bin/spark-sql命令,通过类似MySQL命令行交互的方式直接访问SparkSQL数据库。

查看使用数据库


在spark-sql中查询使用数据库和基本的关系数据库使用方法类似。

show databases;
use mydatabase;


通过上述命令即可查询现有数据库并使用数据库。

从文本文件中导入数据
CREATE TABLE vertices(ID BigInt,Title String) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';
LOAD DATA LOCAL IN PATH 'path/file.txt' INTO TABLE vertices;
上述命令行完成了两样事,创建表vertices并将本地的file.txt导入表中。表中数据按照tab缩进以及换行符进行区分。语句1创建表vertices并创建两个字段ID和Title,其中ID的字段属性为BigInt,Title属性为String。语句二将路径中的file.txt文件导入表中。

利用Scala语言进行数据库操作
val spark = SparkSession.builder.master("local").appName("tester").enableHiveSupport().getOrCreate()
spark.sql("use default")
上述代码通过SparkSession的enableHiveSupport()方法支持Hive数据库的基本使用。通过spark.sql()方法起到对数据库的操作。

编程要求


本关任务主要是利用Spark SQL创建表vertices以及edges,并将本地graphx-wiki-vertices.txt和graphx-wiki-edges.txt两个文件的数据分别导入到表中。

评测说明


评测耗时说明
本实训目前是基于Spark单机模式的运行方式,完成以上评测流程所需时间较长(全过程耗时约118秒),请耐心等待

补全下述代码,使之编译通过。

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql._
object SparkSQLHive {
    def main(args: Array[String]) = {
        val sparkConf = new SparkConf().setAppName("PageRank")
        val sc = new SparkContext(sparkConf)
        val spark = SparkSession.builder.master("local").appName("tester").enableHiveSupport().getOrCreate()
        spark.sql("use default")
        import spark.implicits._
        //drop table if it exists
        spark.sql("DROP TABLE IF EXISTS vertices") 
        spark.sql("DROP TABLE IF EXISTS edges")
        //create table here
        spark.sql("CREATE TABLE IF NOT EXISTS vertices(ID BigInt,Title String)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n&

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/6001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

010_redhat安装zookeeper

目录 1.环境准备2.下载上传zookeeper安装包1)[官网下载zookeeper-3.6.4安装包](https://archive.apache.org/dist/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz)2)创建soft文件夹 3.解压4.配置启动1、配置zoo.cfg2、启动zookeeper 小结 1.环境准备 准备一台l…

如何创建一个 Django 应用并连接到数据库

简介 Django 是一个用 Python 编写的免费开源的 Web 框架。这个工具支持可扩展性、可重用性和快速开发。 在本教程中,您将学习如何为一个博客网站建立与 MySQL 数据库的初始基础。这将涉及使用 django-admin 创建博客 Web 应用程序的骨架结构,创建 MyS…

LeetCode-网络延迟时间(Dijkstra算法)

每日一题 今天刷到一道有关的图的题,需要求单源最短路径,因此使用Dijkstra算法。 题目要求 有 n 个网络节点,标记为 1 到 n。 给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] (ui, vi, wi),其中 …

wordpress外贸独立站建站10要10不要

创建一个成功的WordPress外贸独立站需要注意很多因素。以下是zhanyes根据多年建站经验总结的wordpress外贸独立站建站的10个建议和10个避免的事项,以帮助您建立一个高质量的外贸网站: 10个要: 1. 要选择合适的域名:确保您的域名…

element-ui的bug记录

1.先隐藏元素再显示元素时&#xff0c;导致校验不生效的做法 <el-form-itemlabel"时间长度"prop"timeLength"v-show"form.majorFlag":rules"[{ required: form.majorFlag ? true : false, message: 时间长度不能为空, trigger: blur }…

pyppeteer 执行js函数调用ajax post传入参数并获取返回值

在Pyppeteer中&#xff0c;你可以使用page.evaluate()方法来执行JavaScript函数&#xff0c;并且可以传递参数给这个函数。如果你需要执行一个调用AJAX POST请求的函数并且传入参数&#xff0c;同时需要获取返回值&#xff0c;可以使用以下方法&#xff1a; import asyncio fr…

Mybatis-Plus学习:快速入门、核心功能、扩展功能、插件功能

文章目录 MybatisPlus快速入门快速开始常见注解常见配置 核心功能条件构造器&#xff08;Wrapper&#xff09;自定义SQLService接口基本用法基础业务接口复杂业务接口Lamda查询Lamda更新批量新增 扩展功能代码生成代码生成器快速开发插件 静态工具逻辑删除枚举处理器JSON处理器…

Java实现裁剪PDF

目录 安装Java PDF库 Java裁剪PDF页面 Java裁剪PDF页面并将结果保存为图片、HTML、Excel等格式 裁剪PDF页面是一项常见的任务&#xff0c;它可以用来调整文档的尺寸和去除不需要的边距或白边。通过裁剪页面&#xff0c;你可以优化文档的布局和展示效果&#xff0c;使其更符合…

万界星空科技商业开源MES+项目合作+商业开源低代码平台

今天我想和大家分享的是一套商业开源的 MES制造执行管理系统带源码。对于制造业而言&#xff0c;MES 是一个至关重要的系统&#xff0c;它可以帮助企业提高生产效率、优化资源利用、提高产品质量&#xff0c;从而增强市场竞争力。 什么是 MES&#xff1f; MES 是指通过计算机技…

不通过分组注解计数:Django查询集的高级用法

Django的查询集提供了各种高级用法&#xff0c;可以在不使用分组注解的情况下进行计数。下面是一些常用的高级用法示例&#xff1a; count()方法&#xff1a; 最简单的方法是使用count()方法来计算查询集中的对象数量。例如&#xff1a; num_objects MyModel.objects.count()f…

# notepad++ 编辑器英文版,如何打开自动换行

notepad 编辑器英文版&#xff0c;如何打开自动换行 在Notepad中&#xff0c;如果你想要开启自动换行功能&#xff0c;可以按照以下步骤操作&#xff1a; 1、打开 Notepad 编辑器。 1.1. 依次点击菜单栏中的【视图】&#xff0c;英文版对应【View】。1.2. 在【视图】下拉菜单…

商务谈判技巧与口才书籍有哪些类型

商务谈判技巧与口才书籍有哪些类型&#xff08;3篇&#xff09; 商务谈判技巧与口才书籍的类型丰富多样&#xff0c;以下从三个角度进行介绍&#xff1a; **篇&#xff1a;基础理论与策略类书籍 这类书籍通常深入剖析谈判的本质&#xff0c;系统介绍谈判的原理、技巧和策略。…

QProcess 使用实例

QProcess运行一个命令行&#xff0c;比如ipconfig示例cpp主要的代码如下所示&#xff1a; QStringList m_Arguments; m_Arguments << "/c" << "ipconfig"; QString m_Command("cmd.exe"); QString m_Input; run(); / QStr…

量子城域网建设设备系列(二):量子密钥管系统(KMS)

在上文介绍光量子交换机的文章中我们提到&#xff0c;量子保密通信网络的通道切换是由量子密钥管理系统&#xff08;Key Management System&#xff0c;KMS&#xff09;给光量子交换机下发信道切换指令&#xff0c;实现整个网络中任意两对量子密钥分发终端的量子信道互联互通&a…

WPF之ToolTip提示

ToolTip控件在WPF担任着提示信息的位置&#xff0c;当鼠标悬停在某个标签上时ToolTip中的信息会显示&#xff0c;使用时将ToolTip放在某个标签内部或者设置某个标签的ToolTip属性。 使用方法1 <TextBox Width"300"Height"40"HorizontalAlignment"…

第六十九章 使用 NSD (UNIX® Linux macOS) - 示例 2:两个 Web 应用程序

文章目录 第六十九章 使用 NSD (UNIX Linux macOS) - 示例 2&#xff1a;两个 Web 应用程序示例 2&#xff1a;两个 Web 应用程序将负载分散到多个 NSD 进程上授予 NSD 管理员权限 第六十九章 使用 NSD (UNIX Linux macOS) - 示例 2&#xff1a;两个 Web 应用程序 示例 2&…

Opensbi初始化分析:设备初始化-warmboot

Opensbi初始化分析:设备初始化-warmboot 设备初始化sbi_init函数init_warmboot函数coolboot & warmbootwait_for_coldboot函数domain && scratch(coldboot所特有)console初始化及print相关工作(coldboot所特有)系统调用的相关初始化(coldboot所特有)综上设备…

【跟马少平老师学AI】-【神经网络是怎么实现的】(九)长短期记忆网络

一句话归纳&#xff1a; 1&#xff09;RNN也会存在梯度消失的问题。 2&#xff09;同一句话&#xff0c;对于不同的任务&#xff0c;句中不同的词起的作用也不一样。 3&#xff09;LSTM&#xff08;长短期记忆&#xff09;子网络&#xff1a; 门&#xff0c;让输入经过运算&…

与Apollo共创生态:探索自动驾驶的未来蓝图

目录 引言Apollo开放平台Apollo开放平台企业生态计划Apollo X 企业自动驾驶解决方案&#xff1a;加速企业场景应用落地Apollo开放平台携手伙伴共创生态生态共创会员权益 个人心得与展望技术的多元化应用数据驱动的智能化安全与可靠性的重视 结语 引言 就在2024年4月19日&#x…

SpringBoot的ProblemDetails

1.RFC 7807 之前的项目如果出现异常&#xff0c;默认跳转到error页面。或者是抛出500 异常。 但是对于前后端分离的项目&#xff0c;Java程序员不负责页面跳转&#xff0c;只需要 把错误信息交给前端程序员处理即可。而RFC 7807规范就是将异常 信息转为JSON格式的数据。这个…